简介
最基础的MFC窗口需要CWinApp应用程序类和CFrameWnd窗口框架类。
创建过程
- 新建空的win32项目,并添加“mfc.cpp”和“mfc.h”两个源文件
- 在“mfc.h”中包含头文件“afxwin.h”(mfc的头文件)
1
#include <afxwin.h>
- 创建应用程序类MyApp,继承自CWinApp
1
2
3
4
5class MyApp : public CWinApp
{
public:
virtual BOOL InitInterface();
} - 在类MyApp中添加程序入口函数“InitInterface”,该方法为虚函数
- 创建窗口框架类MyFrame,继承自CFrameWnd
1
2
3
4
5class MyFrame : public CFrameWnd
{
public:
MyFrame();
} - 在CFrameWnd的构造函数中创建窗口
1
Create(NULL, TEXT("MFC"));
- 在入口函数中实例化新的窗口,并进行显示和更新操作
1
2
3MyFrame * frame = new MyFrame;
frame->ShowWindow(SW_SHOWNORMAL);
frame->UpdateWindow();
注意点
- 上述过程没有创建应用程序对象,该操作应该在“mfc.h”中进行。创建的应用程序对象是全局的而且只有一个。
- 想要运行该项目,必须右击项目文件,选择“属性”–“常规”–“MFC的使用”–“在共享DLL中使用MFC”。
- 相关不了解的函数可以查阅《VC++之MFC类库中文手册》,在“索引”中查找时要加上类名。
消息映射
消息映射是一个将消息和成员函数相互关联的表。
- 声明宏,写到.h文件中
1
DECLARE_MESSAGE_MAP()
- 分界宏,写到.cpp中
1
2
3BEGIN_MESSAGE_MAP(theClass, baseClass)
...
END_MESSAGE_MAP() - 找消息宏,写到分界宏中间
- 函数原型声明到.h中
- 函数的实现写到.cpp中
以在MyFrame里面添加一个鼠标左键按下弹出坐标对话框为例
- 在MyFrame中添加声明宏,提供消息映射机制
- 在mfc.h中添加分界宏,并添加左键按下的消息宏
- 在mfc.h中声明函数原型
- 在mfc.cpp中实现
结尾
不管是在学习还是在工作中,不可能记住所有的API,不过要记得大概然后能快速查看文档。查文档也是非常重要的一环,加油。
- 本文作者: Kevin Sworker
- 本文链接: https://sworker.gitlab.io/2019/05/07/MFC-02/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!