//利用WIN32程序调用MFC库显示一个窗口并处理CREATE消息的步骤
//一、环境设置:
//本例使用的是VS2019:1.选择C++ window空项目
// 2.项目->属性->配置属性->高级 MFC的使用选择 在静态库中使用 MFC
// 字符集选择 使用多字节字符集
// 3.项目->属性->配置属性->链接器->系统->子系统选择 窗口
//二、需要包含的头文件
#include<afxwin.h>
//三、公有继承方式声明一个框架窗口类
class CMyFrameWnd :public CFrameWnd {
DECLARE_MESSAGE_MAP() //在框架窗口类中声明消息映射宏
public:
afx_msg int OnCreate(LPCREATESTRUCT pcs); //消息处理(*2)声明CREATE消息处理函数
}; //函数名及参数为MFC指定,afx_msg是MFC
//消息处理函数的标识符,可以不写
//四、实现消息映射宏的消息处理宏入口
BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd) //与消息映射宏配用(参数1为该类的 //类名,参数2为该类基类的类名)
ON_WM_CREATE() //消息处理(*1) (这里以窗口创建时发出的CREATE消息举例)
//此处可以加入其它消息,但相同的消息只能加入一次
END_MESSAGE_MAP() //与消息映射宏配用(无参)
//五、类外实现OnCreat消息处理函数
int CMyFrameWnd::OnCreate(LPCREATESTRUCT pcs) { //消息处理(*3)
AfxMessageBox("CREATE消息已被处理。。。点击后显示窗口");
return CFrameWnd::OnCreate(pcs); //此处返回基类OnCreate函数的目的是我们自己写的消
//息处理函数不一定完整,剩余的任务由基类完成。
}
//消息处理小结:*1.将待处理消息放入消息入口宏之间;*2.在声明消息映射宏的后边声明消
// 息处理函数(并注明public);*3.类外实现消息处理函数
//六、公有继承方式声明一个应用程序类并在类内声明重写InitInstance()虚函数。
class CMyWinApp :public CWinApp { //应用程序类管理程序运行的流程
public:
virtual BOOL InitInstance();
};
//七、重写InitInstance()虚函数
BOOL CMyWinApp::InitInstance() {
CMyFrameWnd* pFrame = new CMyFrameWnd; //以new方式实例化一个在第三步骤声明的框
//架窗口类,pFrame是其指针,该指针的用途
//相当多,包含有窗口句柄等重要信息
pFrame->Create(NULL, //调用pFrame的Create成员函数生成一个窗口
"MFCToolBar",
WS_OVERLAPPEDWINDOW,
CFrameWnd::rectDefault, //缺省值自己未定义,调用基类的缺省值
NULL);
m_pMainWnd = pFrame; //将实例化框架窗口类的指针赋值给应用程序类的成员函数,使两个类
//之间产生联系
pFrame->ShowWindow(SW_SHOW); //调用pFrame的成员函数ShowWindow()显示窗口
pFrame->UpdateWindow(); //调用pFrame的成员函数更新窗口
return TRUE;
}
//八、实例化应用程序类
CMyWinApp theApp; //这是整个程序的关键,main函数即在其中,无此语句程序不能运行