3.填空题
1)MFC封装了大部分____函数,由C格式的函数库升级为类库。使Windows程序开发由____的开发模式改变为____的开发模式,从而使得Windows软件开发效率大大提高了。
2)面向对象的程序设计中有四大特征:____、____、____和____。
3)MFC的六大关键技术包括____、____(RTTI)、____、____、____和____。
4)编译MFC程序时,错误提示是“error LNK2001:unresolved external symbol__endthreadex”,这个错误的原因是____。执行Project→Settings命令或者按快捷键<____>进行设置。
5)不借助“MFC AppWizard”,手工建立MFC程序只需几个步骤。
①从____类派生一个应用程序类。
②使用派生类定义的全局变量(theApp)。
③在预定义头文件“stdafx.h”中禁用“____”,取而代之MFC的头文件(以afx开头)。
④编译设置中选择“Use MFC in a Static Library”。
⑤在CWinApp派生类中,重写____函数作为程序启动代码。
6)任何应用程序启动的过程,都是从操作系统内核(kernel32.dll)调用可执行文件的主函数开始的。控制台或者DOS程序的主函数是____函数,而Windows程序的主函数是____函数。MFC程序和Win32程序一样,都是由____函数启动的,只不过MFC将WinMain函数封装起来了而已。
7)Win32工程的消息处理机制,就是每个窗口都关联一个____。在____中,通过对消息类型的判别来响应不同的消息。
8)MFC的消息处理不是使用一个全局的回调函数,而是创建一个与窗口关联的____,用来接收和处理窗口的消息。然后在ClassWizard选择对应的消息,添加与该消息关联的____来处理该消息,这就是MFC的消息映射机制。
9)一个MFC工程必须包含一个____的派生类,并定义一个派生类的全局变量theApp,这些是MFC处理程序启动的基本组成部分。如果要接收和处理一个对话框内部的消息,则必须创建与之关联的____派生类,并通过类向导对相关消息建立消息映射函数。
10)窗口消息按照消息的来源可以分为____和____。____编号的范围是0~WM_USER-1,____是WM_USER~0x7FFF,WM_USER的数值是1024(0x400)。(https://www.daowen.com)
11)SendMessage和PostMessage这两个函数消息的区别如下。
①____不同。2个函数的4个参数的意义是一样的,只有返回值类型不同(其实从数据上看它们同样都是一个32位的数,只是意义不一样),LRESULT表示消息被处理后的返回值,BOOL表示消息是否传递成功。
②PostMessage是____,SendMessage是____。PostMessage只把消息放入窗口消息队列中,不管消息被处理后的结果就返回;而SendMessage是等待消息被处理完了之后才返回。
③如果在同一个线程内,则经常使用____发送消息时,速度快并能得到返回的消息处理结果。在不同线程或者进程之间,一般使用____发送消息,把消息先放入目标窗口的消息队列中,然后由目标窗口通过消息循环自行派发处理。
12)在Win32程序中只要在____中使用分支语句,即可接收并处理自定义消息。在MFC程序中,必须使用____来关联消息映射函数。
13)类向导(ClassWizard)用于代码管理的3种标志如下。
①“//{{____”下面的代码,是用来管理关联成员变量使用的。
②“//{{____”下面的代码,是用来管理以“WM_”开头的Windows消息映射函数的。
③“//{{____”下面的代码,是用来管理重写基类虚函数的。
14)请填写表3-4中列出的消息参数说明。
表3-4 消息参数说明

(续)
