在以上的程序中,只使用了两个类CFrameWnd 和CWinApp,我们先看第一个类: class sample:public CFrameWnd 第一个类sample继承了CFrameWnd类,CFrame类是MFC类库中的一个类,用它来代表窗体框架,我们先用sample类继承它,在构造函数调用了Create这个函数,在运行Create这个函数时调用的是CFrameWnd类中的函数,是MFC写好的函数,CFrameWnd中封装了CreateWindow这个API函数为它的成员函数Create(),他们的参数都是相似的。但你会问,CreateWindow有11个参数,而这里的Create函数只用了两个参数,因为这里的Create有两个参数为必选参数,后面的参数有默认值。 由MSDN的定义可以看出 BOOL Create( LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle = WS_OVERLAPPEDWINDOW, const RECT& rect = rectDefault, CWnd* pParentWnd = NULL, LPCTSTR lpszMenuName = NULL, DWORD dwExStyle = 0, CCreateContext* pContext = NULL ); 后面的参数都带有一个等号和一个默认的值。 我们再看在看第二个类,继承CWinApp类的App类。 class App:public CWinApp 在这个类中仅仅重写了两个函数,一个InitInstance(),一个ExitInstance(),这个类是控制整个应用程序的,所以称为CWinApp类,是不可或缺的一个类。而且要运行程序,要将该类实例化。实例化会自动调用构造函数,并调用InitInstance()这个函数(调用该函数是MFC写好的, InitInstance()并不是凭空就调用的,而是MFC包装了API函数WinMain,在全局对象实例化后(App a; ),就进入WinMain函数,在里面由MFC这个框架已经写好对InitInstance()的调用,我们进入MFC的源码即可看到),因为该函数是一个虚函数,所以我们实例化继承CWinApp类的App类时,会自动调用App::InitInstance()(如果不明白,请复习c++的虚函数),这样就开始了一个应用程序实例的进程。来到的App::InitInstance()函数。 BOOL App::InitInstance()
|
正在阅读:VC精华教程:MFC入门系列(一)VC精华教程:MFC入门系列(一)
2005-07-07 10:44
出处:PConline
责任编辑:moningfeng
键盘也能翻页,试试“← →”键