目录
1.创建MFC(以2019为例)
1.1 安装MFC组件
勾选这个:
1.2 创建
全部下一步
运行结果:
2.基于单文件的MFC
2.1 类示图
打开类示图,单击右键在属性里面选择要添加的事件or消息
这里我们在view添加一个WM_LBUTTONDOWM的消息
在.cpp中创建如下:
代码目的:当单击鼠标左键会出现鼠标此时的坐标
2.2 绘图
如果有了OnDraw就不要写OnPaint,因为OnPaint会把OnDraw覆盖
void Ctest1View::OnDraw(CDC*pDC)
{
Ctest1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
pDC->TextOut(100,100,TEXT("测试"));//
}
void Ctest1View::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CView::OnPaint()
dc.TextOut(100, 200, TEXT("覆盖"));
}
结果:
由结果分析可知,OnPain会把OnDraw覆盖。因此我们在写代码的时候要注意不能同时写。
2.3 文档/视图结构体系、函数
文档/视图结构体系
MFC应用程序框架结构的基石是文档/视图体系结构,它定义了一种程序结构,这种结构依靠文档对象保存应用程序的数据,并依靠视图对象控制视图中显示的数据,把数据本身与它的显示分离开。
数据的存储和加载由文档来完成,数据的显示和修改由视觉类完成。这是不同于之前两节课的一点。
函数
1)OnCraete与Create的区别
①Create()负责注册并产生窗口,像动态创建控件的Create()一样,窗口创建之后会向操作系统发送WM_CREATE消息。
②OnCreate不产生窗口,只是在窗口显示前的属性例如:风格,位置等。
③OnCreate是消息WM_CREATE的消息响应函数。
2)OnDraw与OnPaint的区别
①OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应该放在OnDraw中。
②OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。
③OnDraw()是CView的类成员函数,没有响应消息的功能。
总的来说,通常我们不必编写OnPaint处理函数。
本节到此结束,下节开始基于对话框的讲解。以及小项目 服务器与客户端的对话。