Visual C++/MFC Tutorial - Lesson 4: MFC Basics

Lesson 4: MFC Basics

Are you ready to start programming? No you are not. You don't want me to teach you a stupid 'hello world' application, do you? If you want to make the most of Visual C++ you have to use Microsoft Foundation Classes (MFC). These classes are great because they wrap all of those handles we talked about in the first lesson with easy to use classes. The most important to you right now is the class CWnd. This wraps the functions which needed a window handle (HWND). Remember that PostMessage function I mentioned?

PostMessage(your_HWND, WM_PAINT, 0,0); 

Well now we can take our windows class and call it's member function.

MyCWnd.PostMessage(WM_PAINT, 0, 0);

This does the same thing, but now we don't have to keep track of the window handles. But don't be fooled, they are still there. We can still use them too. They are now just member variables of the class. The handle to the window a CWnd is associated with in the member variable m_hWnd. We can call the old post message this way:
::PostMessage(MyCWnd.m_hWnd, WM_PAINT, 0,0);

Those colons (::) are used to tell MFC that we are calling the old fashioned versions of the function. You can get away without using them most of the time, but I put them here so you won't be too confused when you see them in microsoft's code.

The CWnd class is the base for several other classes. Like CButton and CDialog which I hope the names make self explanatory.  From CButton you can access the windows handle also. (You'd be surprised how many things are windows.. Scroll bars, edit boxes, tree views, the desktop...) Got all that? Great!

The next most important class, though you won't explicitly use it much, is CWinApp. This class is the backbone of all of your future MFC applications. This is the class that does the main dirty work under the hood. Your program will have a CWinApp class, which when created, starts the program execution. The main function called when the CWinApp is constructed is InitInstance(). In this
function windows are created and the application is set up. Think of the InitInstance() function in CWinApp as the main() section in a C program.

Let's move on to one last very useful MFC class that you will surely use: CString. This is one of microsoft's support classes. It is used to make string manipulation easier. Since CString overrides many of the common operators, like = and +, you can do things like this:

CString strMyString; 
strMyString="May the Force be with you"; 
strMyString+=" young Jedi." 
printf("%s", strMyString); 
//output will be "May the Force be with you young Jedi."; 


Comments

  • Very Good

    Posted by Cush on 06/28/2005 06:27am

    Very easy for beginners to understand

    Reply
  • is there more?

    Posted by sdeleon on 03/23/2005 03:04pm

    Hi, I am very new at VC++ using MFC. This is a good start. However, is this the only page of this MFC Basics. Where do I go from here? Thanks...

    Reply
  • nice!

    Posted by Legacy on 02/11/2004 12:00am

    Originally posted by: Ding Qishuo

    so nice!
    I'm trying to give a simple tailored lecture to my students, this is easy and obvious to explain and understand.

    Reply
  • typo on code

    Posted by Legacy on 02/04/2004 12:00am

    Originally posted by: Anna

    missing semi-colon on line:
    
    strMyString+=" young Jedi.";

    Reply
  • ..i..

    Posted by Legacy on 01/17/2004 12:00am

    Originally posted by: mastermind

    wahehehe lol hohohohohohohoho wahehehehe lolz

    Reply
  • good one!

    Posted by Legacy on 12/16/2003 12:00am

    Originally posted by: starlight

    good one!

    Reply
  • What is this shit?

    Posted by Legacy on 12/04/2003 12:00am

    Originally posted by: Bill Gate

    What is this ****?

    Reply
  • foolishness

    Posted by Legacy on 09/28/2003 12:00am

    Originally posted by: anju

    what rubbish is this?

    Reply
  • deb

    Posted by Legacy on 07/20/2003 12:00am

    Originally posted by: deb

    amazing&outstanding
    

    Reply
  • Impressive

    Posted by Legacy on 07/08/2003 12:00am

    Originally posted by: Oly

    This is the dogs, and you got a Star Wars reference in!

    Reply
  • Loading, Please Wait ...

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: August 20, 2014 @ 1:00 p.m. ET / 10:00 a.m. PT When you look at natural user interfaces as a developer, it isn't just fun and games. There are some very serious, real-world usage models of how things can help make the world a better place – things like Intel® RealSense™ technology. Check out this upcoming eSeminar and join the panel of experts, both from inside and outside of Intel, as they discuss how natural user interfaces will likely be getting adopted in a wide variety …

  • Protecting business operations means shifting the priorities around availability from disaster recovery to business continuity. Enterprises are shifting their focus from recovery from a disaster to preventing the disaster in the first place. With this change in mindset, disaster recovery is no longer the first line of defense; the organizations with a smarter business continuity practice are less impacted when disasters strike. This SmartSelect will provide insight to help guide your enterprise toward better …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds