利用向导创建MFC程序

7 篇文章 0 订阅

 以下内容引自08_利用向导创建mfc_哔哩哔哩_bilibili

创建项目

打开Visual studio,这里使用的是VS2022

 直接搜索MFC,选择MFC应用

给项目起个名称,我这里是附加到别的解决方案中,也可以 “创建新的解决方案”

点击创建后弹出下面对话框,应用程序类型先选择“单个文档”,项目样式选择“MFC standard”,然后直接点击“完成”创建项目。

 创建完成后,可以发现向导给我们自动创建了四个类:

MFC开发时通常使用类视图

双击类视图中对应的类可以进入对应的头文件,该类中的成员变量及函数则列举在类视图下方,点击即可进入cpp文件。

增加和删除消息映射

想要增加消息映射时,右键CMainFrame类,选择属性-》消息:

例如要添加鼠标左键按下的处理事件,选择WM_LBUTTONDOWN,点击OnLButtonDown

 对应的MainFrm.h和cpp文件的分界宏中自动添加如下内容:

也可以通过属性-》消息去删除该消息映射:

Frame“相框”和View“相片 ”

在CMainFrame中增加鼠标左键按下的处理逻辑如下,运行之后可以发现鼠标左键按下后并没有产生期望的效果。

 这是因为,Frame相当于一个相框,其实它被View盖住了,在CMFCGuideView中以同样的方式创建鼠标左键的消息映射:

此时运行之后,鼠标左键按下后可以产生期望的效果:

 所以显示类的功能最好放在View类中实现,不要放在Frame类中。

绘图 

 View类中声明了一个OnDraw函数,可以在里面写实现:

运行效果入下:

也可以右键属性,创建WM_PAINT的消息映射:

运行效果如下:

可以看到OnPaint将OnDraw覆盖了,所以有OnDraw之后就最好不要有OnPaint了。

框架中一些重要函数

  • InitInstance函数,应用程序类的一个虚函数,MFC应用程序的入口
  • PreCreateWindow函数,框架调用CreateEx函数创建窗口时会首先调用此函数,通过修改传入的结构体参数CREATESTRUCT,应用程序可以更改创建窗口的属性,在产生窗口之前让程序员有机会修改窗口的外观,最后再调用CreateWindowEx函数来完成窗口的创建。
  • OnCreate函数,是一个响应WM_CREATE消息的函数,在窗口显示前设置窗口的属性如风格、位置等。WM_CREATE消息是由Create函数调用的,窗口创建时(Create)会向操作系统发送WM_CREATE消息。下面引自OnCreate()与PreCreateWindow()_menglongcaiying的博客-CSDN博客

CWnd::Create()/CreateEx()

{

    PreCreateWindow();//可以理解为窗口好比一栋建筑,那么PreCreateWindow()要做的就是在还没有建筑的时候将建筑的图纸画出来,而OnCreate()要做的就是根据图纸将建筑构建起来

   发送WM_CREATE消息

}

最后,一般会调用OnDraw()函数,绘制窗口上的控件!

  • OnDraw和OnPaint,OnPaint是CWnd类成员,OnDraw是CView类成员,没有相应消息的功能,OnPaint通过创建CPaintDC类的DC对象来响应WM_PAINT消息并调用OnDraw函数,通常不必写OnPaint函数。

拓展知识点

MFC中,后缀名为Ex的函数都是拓展函数,以Afx为前缀的函数都是全局函数,可以在程序任意地方调用,例如AfxMessageBox()。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值