【vb精品源码栏目提醒】:网学会员--在 vb精品源码编辑为广大网友搜集整理了:MFC入门教程及解惑 V1.1 - 其它资料绩等信息,祝愿广大网友取得需要的信息,参考学习。
MFC 入门教程 V1.1 2012 年 9 月 3 日自动化系科协网络部 JK说明:本教程旨在指导同学们在一定 Win32 程序运行理论的基础上快速上手,以对话框类为例做出基本的图形界面,同时解答一些常遇见的问题和常有的疑问,最后给出一些学习方法经验和资料。
工程环境:Visual Studio 2010补充知识点:MFC 程序运行理论在你们学过的 C编程中,程序按照从 main 函数开始顺序执行整个过程,但是在 MFC 程序中,这种思想被颠覆了,显然通过简单的顺序流程是无法描述一个应用程序的所有过程的,于是在 MFC 中我们引入一下几个概念:事件驱动(产生消息)和消息响应,包括消息队列(各种产生的消息排成的队列),消息循环(处理消息)。
我们首先理解这几个概念。
事件驱动:在 MFC 程序运行后,需要与操作者进行交互,这个交互的过程的开始就是操作者进行一些事件(例如:单击一个按钮或双击一个按钮,滚动鼠标滚轮,按下键盘上的键,甚至在程序界面上移动鼠标),操作者在执行这些操作的时候,MFC 程序产生一个个消息,消息中包含了操作者进行操作的各种信息(例如你按下了键盘上字母 A,MFC 程序便会产生一个键盘上有键被按下的消息,这个消息其实是一个结构体,里边含有你按下的字母信息) ,MFC 程序把他们投递到消息队列中,它们排队等待进入消息循环中接收处理, 这样就开启了消息响应的过程,这便构成了一种由事件驱动的交互的方法。
消息队列(本质可以看做一个链表):从名字上看就可以理解,它是由事件驱动产生的消息排成的一个队, 为什会有这个队列是因为 MFC 产生的消息很多,就像我前边说的你在程序界面移动鼠标,每移动一个点都会产生一个消息,所以消息其实很多,需要排个队,当然你也不用太担心,MFC 处理消息的速度也是很快的。
消息循环(本质就是一个函数):消息循环是程序初始化完成后 MFC 不断调用的一个函数,这个函数不断检测消息队列是否为空,若不空则按顺序提取消息处理它。
当然,这里的处理不是指它其中包含有我们写的消息处理函数,而是它会把对应的消息发送给对应的处理函数(主要是传递消息中的参数) ,例如:消息循环从队列里取出了一个按下 Button1 的消息,那么它就把消息发送给 Button1按钮的处理函数(这个是我们自己写的),于是我们写的代码得以执行。
有了上述概念后,我们就知道了,我们写 MFC 程序其实就是在建立一个个事件到对应的事件处理函数的对应关系,通俗点说,就是给老师要求的每种功能拖出来相应的控件,添加对应的处理函数,而程序的整体框架不是我们关心的主要内容。
最后针对一些同学还比较迷惑具体的逻辑处理写在哪里,我再举个例子:例如你添加了一个查询按钮,查询你输入学号对应的学生名字,那么无论是你的逻辑代码还是调用数据库需要粘贴的模块化的代码都应该写在这个按钮的消息处理函数里(就是双击按钮产生的函数),因为按下这个按钮简化一点其实就是调用了其对应的函数。
原文里我讲到了两个重要的函数 Messagebox 和 updatedata,我再补充一个很重要的虚函数,在类向导中对应类的虚函数页面可以添加,叫 oninitdialog,这个函数在你定义了一个对话框变量后,执行完构造函数后会执行,作用是进行一些初始化的操作,你们需要添加的初始化代码应该写在这里(例如等你们用到 ListControl 后,添加最上边的栏目时)。
最后有问题欢迎人人上给我留言,我看到了及时给大家解决。
————————————————分隔线下为原文内容——————————————1. 创建 MFC 工程 欢迎界面选择新建项目出现下边窗口,如图选择 MFC 应用程序,我们此处起名叫 helloMFC,确定进行下一步。
下边进行 MFC 程序模版的设置,下一步直到出现下边的设置窗口。
这个窗口中选择应用程序基于对话框类,去掉使用 Unicode 库(用于文字支持,有兴趣 ,同时选用在静态库中使用 MFC(使得你的程序不依赖于系统,可以在别人的电 百度) 。
脑