1 MFC以两个主类为核心:CWinApp与CFrameWnd。(C代表MFC,Win与Wnd代表Window,App代表应用程序,Frame代表框架)。回顾一下:C语言一样有个主程序main,window程序则是WINAPI WinMain(四个参数)。而MFC就是把WinMain封装到CWinApp里面。
2 按照C++ 类的定义:在.h类的申明构造函数,.CPP里面的构造函数实现
总的来说初始化应用程序,初始化窗口,程序的接口连接窗口。
由WinApp的成员指针m_pMainWnd指向框架CFrame。
#include"myapp.h" MyApp myapp; BOOL MyApp::InitInstance()//::并且是继承的虚函数构造函数 { this->m_pMainWnd = new MyFrame();//既然是指针就必须new 一段内存 //应用程序对象成员变量m_pMainWnd是一个窗口指针,即主窗口的指针。 //初始化实例时创建N多个窗口,而只有这个指针指向的才是主窗口 this->m_pMainWnd->ShowWindow(this->m_nCmdShow);//类似函数this Fun(this varibal) //m表示CWinApp的数据成员变量,'_'是一个命名的规则,方便阅读,n表int型,Cmd表命令Show表示应用程序窗口 //的表现状态,如传递窗口的最大化或最小化... this->m_pMainWnd->UpdateWindow(); return TRUE;//全大写的TRUE } MyFrame::MyFrame() { this->Create(NULL, TEXT("my")); // http://heduoduo321.blog.163.com/blog/static/657211222011279282841/ }
如果没有实例化,MyApp myapp;会有如下报错
初始化指针不对,事件句柄出错,窗口指针出错->没有初始化
#include <afxwin.h> //MFC的头文件 class MyApp : public CWinApp //类的继承 { public: virtual BOOL InitInstance();//避免多层继承virtual };//结束;BOOL是大写 class MyFrame : public CFrameWnd { public: MyFrame();//构造函数与子类一样 };
