一、前置
本机环境:Win11,VS2022
首先要保证VS中已经安装MFC扩展包,未安装可以在工具->获取工具和功能 中搜索安装
二、MFC程序创建
下面是MFC程序创建过程
- 搜索MFC,选择MFC应用,点击下一步
- 填写项目名称,选择项目位置,创建
- 选择单个文档、项目样式选择MFC standard,点击完成即可创建成功
- 在 生成的类 中,发现一共会生成五种类:App类相当于MFC程序的入口;Doc类用来管理数据;Frame类是框架类,可以理解成窗口;View类即视类。直接点击完成即可创建成功。
可以直接运行,生成以下窗口
三、一个简单的消息映射
功能描述
点击窗口中的任意位置,跳出一个新的窗口,显示点击处的坐标
功能实现
分析功能,本质上我们希望 窗口 响应 点击事件 ,并生成一个窗口,窗口中文字是自定义的。但是frame是框架类,view是视类,是真正进行显示的部分,有关显示的东西全部都写到View类。
- 双击类视图中的CView,即可跳转到对应的.h文件中,发现CView类中已经写好声明宏
DECLARE_MESSAGE_MAP()
,意思是可以将消息映射到属于该类的对象中
- 接着双击该类下的任意一个函数,即可跳转到.cpp文件,发现分界宏已经有了,我们希望受到响应的事件/消息可以在分界宏之间定义
- 右击C*View,点击属性,选择消息
- 找到OnLButtonDown,点击add,就可以自动生成函数,现在只需要填充函数内容即可
- 在OnLButtonDown函数中进行实现,代码如下所示
// 注意把类名换成自己的
void CSmallDrawingSystemView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CView::OnLButtonDown(nFlags, point);
CString str;
str.Format(TEXT("x=%d, y=%d"), point.x, point.y);
MessageBox(str);
}
- 点击运行,效果如下