一、选择题
1、 下面说法正确的是( C )
A、构造函数和析构函数都不可以重载。B、构造函数不能重载,析构函数可以重载。
C、构造函数可以重载,析构函数不能重载。D、构造函数可以重载,析构函数也可以重载。 2、 下面关于 API 的描述错误的是( C )
A、API 函数构建在 Windows 操作系统上。
B、创建应用程序、打开窗口、描绘图形都要调用 API 函数。 C、现在,Windows 程序员编写程序只能使用 API 函数。
D、API 是用来控制 Windows 各个元素的外观和行为的一套预定义的 Windows 函数。 3、 下面关于 MFC 的描述错误的是(B)
A、MFC 是指微软基础类库。 B、MFC 不提供对底层 API 的直接调用。 C、MFC 对 API 函数进行了 C++封装。
D、MFC 是微软公司提供的用在 Visual C++环境下编写 Windows 应用程序的一个框架和引擎。 4、 下列对于 WinMain 函数的描述中,错误的是 (A )
A、WinMain 函数不能有参数。 B、WinMain 函数是 Windows 程序的入口点。
C、WinMain 函数的名称是固定的。D、窗口函数与 WinMain 的关联是通过窗口类的注册实现的。 5、 对消息循环描述错误的是(D)
A、TranslateMessage 将虚拟键转换成字符消息。
B、GetMessage 函数在消息队列为空时,将一直空闲。 C、GetMessage 函数在消息队列非空时,取得消息并返回。
D、若 GetMessage 取得的是 WM_QUIT 消息则返回非 0,否则返回 0。 6、 注册窗口类型的 API 函数是( B)
A、CreateWindow A、CreateWindow
B、RegisterClass B、RegisterClass
C、ShowWindow C、ShowWindow
D、UpdateWindow D、UpdateWindow
7、 创建窗口的 API 函数是( A) 8、 关于 GDI 的描述错误的是( D )
A、GDI 指图像设备接口。 B、GDI 负责用户和绘图程序之间的信息交换。 C、GDI 控制在输出设备上显示图形或文字。
D、采用了 GDI,编程时还需关心显示卡或打印机的驱动程序。 9、 关于设备上下文的描述错误的是( C )
A、设备上下文允许在 Windows 中进行与设备无关的绘制。
B、设备上下文对象封装了绘制线条、形状和文本等的 Windows API。 C、设备上下文可以用于绘制到屏幕、打印机,但不能绘制到图元文件。 D、设备上下文是一种包含有关某个设备的绘制属性的 Windows 数据结构。 10、关于设备上下文的描述错误的是( D )
A、设备上下文允许在 Windows 中进行与设备无关的绘制。 B、设备上下文可以用于绘制到屏幕、打印机和图元文件。
C、 设备上下文是一种包含有关某个设备的绘制属性的 Windows 数据结构。
D、设备上下文对象封装了绘制线条、形状的 Windows API,没有封装文本的 Windows API。 11、为了完成消息映射,不需要 ( C )。
A. 在类的实现里,实现消息处理函数。
B.在类的定义里,增加消息处理函数声明。
C. 在类的定义里,使用 IMPLEMENT_ MESSAGE_MAP 宏实现消息映射。 D.在类的定义里,添加一行声明消息映射的宏 DECLAR E_MESSAGE_MAP。 12、下列标准控件中( B )不是CButton类。
A、普通按钮
B、静态文本
C、单选按钮
D、复选按钮
13、所有的控件类都是从( B )类派生。
1
A、CCobject B、CWnd C、CStatic D、CButton
14、在尾部添加一个菜单项的方法是( A )。
A、AppendMenu
B、InsertMenu C、LoadMenu
D、TrackPopupMenu
15、创建空的弹出式菜单的方法是( B )。
A、CreateMenu
B、CreatePopupMenu C、GetPopupMenu
D、TrackPopupMenu
16、创建控件消息时,可以使用类向导建立消息映射和消息处理函数之间的关系,在源文件中消息映射表
中其消息映射宏是( D )。
A、ON_COMMAND B、ON_MESSAGE C、ON_WM_LBUTTONDOWN D、ON_BN_CLICKED 17、创建命令自定义消息时,在源文件中的消息映射表中手动添加其消息映射宏是( B )
A、ON_COMMAND B、ON_MESSAGE C、ON_WM_LBUTTONDOWN D、ON_BN_CLICKED 18、VC中存在几种系统定义的消息分类,不同的前缀符号经常用于消息宏识别消息附属的分类,表示按
钮控制消息(A ) A、BM B、CB
C、DM
D、EM
19、Windows应用程序常用消息,产生单击鼠标左键的消息是( A)
A、WM_LBUTTONDOWN
B、WM_RBUTTONUP
C、WM_LBUTTONUP D、WM_RBUTTONDBLCLK
20、Windows应用程序常用消息,按下一个非系统键时产生的消息是( B)
A、WM_RBUTTONUP B、WM_KEYDOWN C、WM_KEYUP D、WM_POPDOWN
21、继承具有( B ),即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的
成员 A、规律性 B、传递性 C 、重复性 D 、多样性 22、由CreateWindow函数发出的消息(B)
A、WM_CLOSE B、WM_CREAT C、WM_DESTROY D、WM_KEYDOWN 23、由PostQuitMessage函数发出的消息( D)
A、WM_CLOSE
B、WM_CREAT C、WM_DESTROY D、WM_QUIT
24、包含一个消息的全部信息,是消息发送的格式的数据结构是(C )
A、POINT
B、RECT C、MSG
D、WINDCLASS
25、定义了一个矩形区域及其左上角和右下角的坐标的数据结构是(B )
A、POINT
B、RECT C、MSG
D、WINDCLASS
26、输出文本之前要获取字体的信息,如字符高度等,以确定输出格式和下一行字符的位置,获取当前使
用字体信息函数(C ) A、GetFontMetrics
B、GetFontMetric C、GetTextMetrics D、GetTextMetric
27、文本输出函数TextOut(HDC hdc, int X, int Y, LPCTSTR lpstring, int nCount)第四个参数nCount记录的是
(A ) A、lpstring中的字符串的字节数 B、字符串的长度 C、lpstring的长度 D、lpstring串的循环次数 28、虚拟码是一种与设备无关的键盘编码,它的值存放在键盘消息的( A )参数中
A、wParam C、VK B、Param D、VB 29、Alt键与相关输入键的组合产生的消息是( A)
A、系统按键消息 B、非系统按键消息 C、空消息 D、组合消息
2
30、一个按键的组合产生了一个可以显示的字符时,就产生了一个( B )
A、按键消息 B、字符消息 C、组合消息 31、资源描述文件中ACCELERATORS定义的是:( D )
A、菜单 B、弹出式菜单C、组合键 32、资源描述文件中DIALOG定义的是:( C)
A、菜单 B、弹出式菜单C、对话框资源 D、加速键资源 33、下列消息不是窗口消息的是( A )。
A.WM_COMMAND
B.WM_CHAR C.WM_MOUSEMOVE
D. WM_PAINT
D、加速键资源
D、空消息
34、Afx为前缀的函数(数据库类函数和DDX函数除外)和变量中,表示无条件终止一个应用程序的是
( A ) A、AfxAbort B、AfxBeginThread C、AfxFormatString D、AfxMessageBox 35、Afx为前缀的函数(数据库类函数和DDX函数除外)和变量中,表示显示一个Windows消息框是( D)
A、AfxAbort
B、AfxBeginThread C、AfxFormatString D、AfxMessageBox
36、在MFC中表示窗口类的是( D)
A、CDialog类 B、CMenu类 C、CView类
D、CWnd类
37、根据对话框的行为性质,对话框可以分为两类:( B )
A、对话框资源和对话框类 C、对话框资源和对话框模板
B、模式对话框和非模式对话框 D、消息对话框和模式对话框
38、一个视图对象能连接( D )文档对象,一个文档对象能连接( )视图对象。
A、多个,多个 B、多个,一个 C、一个,一个
D、一个,多个
39、下面四个MFC类中哪一个是管理MFC应用程序的 ( A )
A. CWinApp B. CMainFrame C. CDocument D. CView 二、填空题
1. 消息循环的处理过程如下: A 函数不断侦察应用程序的消息队列,若队列为空,该函数一直运行,不返回;一旦发现队列不为空,便取出一条消息,把它拷贝到msg结构变量中,同时该函数返回TRUE;得到消息msg后, B 把来自键盘的命令翻译成WM_XXX消息命令形式。 C 函数通知Windows把每个消息分发给相应的窗口函数。应用程序并不直接调用窗口函数,而由Windows根据消息去调用窗口函数,因此,窗口函数经常被称为回调函数。 A、GetMessage( ) D、SendMessage( )
B、translateMessage( ) E、DispatchMessage( )
C、PostMessage( )
2. CDC 类叫做设备描述表类。
3. 在VC程序中通过类的 成员函数 来访问其内部的数据成员,成员函数是类与外部程序之间的接口。 4. 采用函数SendMessage 和 PostMessage 都会向窗体发送一个消息,但 SendMessage 在消息处理完成后返回,而 PostMessage 把消息放进消息队列就立即返回 。
5. 使用MFC AppWizard产生的应用程序的类型主要包括:单文档应用程序、 多文档应用程序
和 基于对话框的应用程序 。
6. 若在绘制客户区时获取设备上下文调用的函数是GetDC,则释放它是调用的函数是
ReleaseDC 。
7. 若在绘制客户区时获取设备上下文调用的函数是BeginPaint,则释放它是调用的函数是
3
EndPaint 。
8. Windows 窗口中,菜单分为两种: 下拉式菜单 和 弹出式菜单 。 9. Windows 应用程序的消息来源主要包括 系统消息 和 自定义小心 。
10. Windows 应用程序的消息按处理方式主要包括 窗口消息 、 命令消息 和
控件通知消息 。
11. 数据更新时,可调用Invalidate或InvalidateRect函数使客户区全部或者部分无效,出发 Windows 发
送 WM-PAINT 消息,并调用 OnDraw 消息处理函数重绘客户区或刷新窗口。
12. 当用户按下键盘上的某个按急键时,键盘的接口会产生与该按键相对应的 扫描码 ,它存在设备相关性。因此为了实现与设备无关,Windows 应用程序的编写过程中直接使用 虚拟码 来对键盘进行操作。
13. UpdateData 函数可以用在对话框中更新数据,将控件数据保存到数据成员应带参数 TRUE ,
反之应带 FALSE 。
14. 类的定义一般分为 声明 和 定义 两部分,其中前一部分告诉使用者“ 干什么” ,而
后一部分告诉使用者“怎么干” 。
15. 菜单类对象和位图类对象分别通过 LoadMenu 、 LoadBitmap 函数加载菜单资源
和位图资源。
16. 封装画刷的 GDI 类是 CBrush类 ,封装画笔的 GDI 类是 CPen类 ,封装字体的
GDI 类是 CFront类 ,封装位图的 GDI 类是 CBitmap类 。
17. 使用 VC++ 的 AppWizard 创建的典型单文档应用程序的 4 个 MFC 基类是
CWinAPP 、 CFrameWnd 、 CDocument 和 CView 。 1、 什么是设备的无关性?什么是映像模式?
解:设备的无关性就是操作系统屏蔽了硬件设备的差异,因而设备无关性能使用户编程时无需考虑特殊的硬件设置。
映像模式定义了将逻辑单位转化为设备的度量单位以及设备的x方向和y方向,这样程序员可在一个统一的逻辑坐标系中操作而不必考虑输出设备的坐标系情况。 2、 应用程序类主要完成的功能是?
解:一是调用成员函数 InitInstance 来完成窗口的设计、注册、创建、和显示工作。 二是调用成员函数 Run 来完成消息循环。
3、 什么是句柄?它在Windows程序中的作用是什么?
解:句柄是Windows用来标识被应用程序所建立或使用的对象的唯一整数(一个4字节长的数值),Windows使用各种各样的句柄标识诸如应用程序实例、窗口、控制、位图和GDI对象等等。 4、 Windows 程序的入口点是什么函数 ? 它主要完成什么功能 ?
解:Windows 程序的入口点函数是 WinMain(),完成的主要功能是创建、注册和显示窗口,以及启动消息循环完成消息驱动。
5、 创建一个窗口要经过几个步骤?
解:要经过 5 个步骤:设计窗口类型、注册窗口类型、创建窗口、显示窗口和消息循环。 6、 在MFC应用程序中如何对应用程序和对话框进行初始化?
解:一般在虚函数InitInstance 中对应用程序进行初始化;在 OnInitDialog函数中对对话框进行初始化。
4

