应用程序类型
生成的类
将会生成4个类,其中:
App
类继承于CWinApp
;
CMainFrame
类继承于CFrameWnd
;
View
类继承于CView
;
Doc
类继承于CDocument
;
即App
为应用程序类,CMainFrame
为窗口框架类。
View
类用于存放需要显示的内容,关于显示的东西都写到View
文件中。
Doc
类用于管理数据文档
注意:应该将文件的视图方式改为:视图->类视图
这样将看到五个文件,通过鼠标右击View
文件->属性->消息 中可以直接添加消息。
添加的消息将自动完成在
.cpp
文件中的分界宏中添加消息宏,同时在.h
文件中添加提供消息映射机制的声明宏和消息的函数声明。我们只需要在.cpp
文件的函数体中填写消息触发逻辑即可。
注意:
使用同样的方式在CFrameWnd
中添加消息无法实现消息。因为只允许将关于显示的内容放到View
文件中。
在View
文件中可以用两个绘图函数OnDraw
和OnPaint
,如果两个函数同时存在,那么OnDraw
将被覆盖,所以不要写OnPaint
,因为OnDraw
已经存在。
void CMFCApplication2View::OnDraw(CDC* pDC)
{
CMFCApplication2Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
pDC->TextOutW(100, 200, L"这个将被覆盖");
}
void CMFCApplication2View::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CView::OnPaint()
dc.TextOutW(100, 200, L"这是爸爸");
}
更改窗口大小
对窗口大小等信息的修改在CMainFrame
中的PreCreateWindow
函数中操作。
Create和OnCreate的区别
Create()
负责注册并产生窗口,像动态创建控件中的Create()
一样,窗口创建之后会向操作系统发送WM_CREAT
消息。该消息由OnCreate()
响应。
OnCreate()
不产生窗口,只在窗口显示前设置窗口的属性。如风格,位置等。
扩展知识
MFC中所有后缀名为Ex的函数都是扩展函数,有很多重载。
MFC中以Afx作为前缀的函数都是全局函数,可以在程序的任何地方调用它们。