MFCWindows应用程序设计复习题Word文档下载推荐.docx
- 文档编号:19790014
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:13
- 大小:24.84KB
MFCWindows应用程序设计复习题Word文档下载推荐.docx
《MFCWindows应用程序设计复习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MFCWindows应用程序设计复习题Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
7.应用程序接收到(A)消息时停止接收其他消息
WM_QUITB:
WM_DESTORY
WM_PAINTD:
WM_COMMAND
8.下列Windows数据格式中,代表设备句柄的是(B)。
A.HWNDB.HDC
C.HINSTANCED.HFONT
9.典型的Windows窗口程序的流程为:
(A)
A.注册窗口类->
创建窗口->
显示窗口->
更新窗口->
消息循环
B.创建窗口->
注册窗口类->
C.创建窗口->
D.注册窗口类->
10.在WinMain函数的原型中HINSTANCEhInstance定义的是(A)HINSTANCEhPrevInstance定义的是(B)LPSTRlpCmdLine定义的是(C)intnCmdshow)定义的是(D)
当前实例句柄B:
先前实例句柄
指向命令行参数的指针D:
窗口的显示状态
11.以下哪个不是WinMain函数中完成的操作(D)
注册窗口类B:
创建应用程序主窗口
进入应用程序消息循环D:
调用窗口过程函数
12.下面说法错误的是(D)
一个Windows程序可以包含多个窗口过程
一个窗口过程总是与调用RegisterClass注册的特定窗口类相关联
CreateWindow函数根据特定窗口类创建一个窗口,但基于一个窗口类,可以创建多个窗口
窗口过程必须由程序调用,而不是由Windows本身直接调用
13.Windows应用程序中使用了各种WindowsAPI函数声明,宏定义,数据类型定义,(D)是主要的包含文件。
ASTDIO.HBWINDEF.HCWINUSER.HDWINDOWS.H
14.注册窗口类型时,窗口风格各个选项可以用(B)运算符联合表示。
AAND(&
)BOR(|)C逻辑与(&
&
)D逻辑或(||)
15.在函数CreateWindow()调用返回之后,Window内部(B)
已经创建了这个窗口,但还未分配内存
已经创建并分配了内存
还未真正创建窗口,等待分配内存
还未真正创建窗口,但已经分配内存
16.关于函数ShowWindow(HWNDhwnd,intiCmdShow),下面说法错误的是(C)
hWnd是窗体句柄
nCmdShow是窗体显示方式
nCmdShow与WinMain函数定义的窗体显示方式相同
nCmdShow与WinMain函数定义的窗体显示方式必须不同
17.关于函数UpdateWindow()的说法正确的是(D)
A该函数的作用是将窗口重新绘制
B调用该函数后,该函数发出WM_PAINT消息
C该函数将消息发送给窗口函数进行处理
D以上答案都正确
18.下面关于消息循环的说法错误的是(D)
Windows为当前运行的每个Windows程序维护一个“消息队列”
程序通过执行一块被称为“消息循环”的代码从消息队列中取出消息
消息循环从GetMessage调用开始,它从消息队列中取出一个消息
GetMessage通常将一个指向msg的MSG结构的指针直接传递给窗口函数WndProc
19.GetMessage对于除了WM_QUIT之外的从消息队列中取出的所有消息都返回(A)
非0值B:
0C:
1D:
NULL
20.在(D)之后,WinMain退出消息循环
A用户通过单击Close按钮或在系统菜单选择Close发出WM_DESTROY消息
B结束对任何消息的DispatchMessage调用
C通过调用函数PostQuitMessage(0)在程序的消息队列中插入一个WM_QUIT消息
DGetMessage取到一个WM_QUIT消息,程序继续执行returnmsg.wParam
21.下面说法错误的是(B)
窗口过程接受的每一个消息都是用一个数值来表示的
窗口过程在处理消息时,必须返回1
窗口过程不予处理的所有消息应该被传给名为DefWindowProc的Windows函数。
从DefWindowProc函数返回的值必须由窗口过程返回
22.下面哪一步确定了在窗口中的客户区域中显示什么,以及在窗口中怎样响应用户输入(D)
A注册窗口类B创建窗口C显示窗口D窗口过程
23.关于窗口过程的说法正确的是(C)
A一个窗口过程能处理基于同一个窗口类创建的多个窗口的消息
B一个窗口过程只能处理基于同一个窗口类创建的一个窗口的消息
C一个窗口过程能处理基于多个窗口类创建的多个窗口的消息
D一个窗口过程只能处理基于多个窗口类创建的一个窗口的消息
24.关闭窗口时产生的消息(D)
A、WM_KEYDOWNB、WM_CREAT
C、WM_DESTROYD、WM_CLOSE
25.由CreateWindow函数发出的消息(B)
C、WM_DESTROYD、WM_CLOSE
26.由PostQuitMessage函数发出的消息(A)
A、WM_QUITB、WM_CREAT
27.包含一个消息的全部信息,是消息发送的格式的数据结构是(MSG)
28.系统通过(窗口句柄hwnd)在整个系统中唯一标识一个窗口
29.系统是根据(消息的接收句柄)来确定要接收消息的窗口的
30.当同时有多个消息时,系统将(将消息放入消息队列中)
31.MFC功能从底层来说是通过(调用最基本的Win32API)来实现的。
32.API是(应用程序编程接口)
33.句柄的含义?
句柄是一个(通常为32位的)无符号整数(unsignedint),通常用它来标识一个内核对象。
34.事件驱动、消息驱动的概念?
事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的的用户用各种合理的顺序来安排程序的流程。
35.GetMessage()函数在什么情况下返回0,从而导致消息循环终止,程序结束?
在接收到WM_QUIT消息时返回0
36.主控函数WinMain()建立消息循环的代码?
While(GetMessage(&
msg,NULL,0,0))
{
TranslateMessage(&
msg);
DispathMessage(&
}
37.说明Windows应用程序的主函数、窗口函数与Windows系统之间的关系?
Windows应用程序的主函数和窗口函数都是系统调用的函数,主函数是在应用程序启动时由系统首先调用的函数,而窗口函数是主函数在消息循环中获得消息并把消息派送给系统之后,由系统调用的用来处理消息的函数。
第2章windows应用程序的类封装
1.在窗体类CFrameWnd中需要封装哪些成员?
答:
在窗体类CFrameWnd中要封装窗口句柄、窗口类的定义、注册窗口类、创建窗口、显示更新窗口。
2.应用程序类CwinApp应该具备那些主要功能?
创建、显示应用程序的窗口和建立消息循环。
3.在MFC程序设计中,如果要建立拥有自己风格的主窗口,应该重写什么函数。
继承CWinApp类并需要重写该类的成员函数InitInstance。
4.以下哪个消息不属于Windows应用程序的消息来源(B)
输入消息B:
输出消息C:
系统消息D:
用户消息
5.在CWinApp类的关键函数中,负责消息循环的函数是(A)
A.RunB.InitInstance
C.OnPaintD.WndProc
6.下列哪个宏用于处理用户自定义消息?
(A)
A.ON_COMMAND
B.ON_MESSAGE
C.ON_CONTROL
D.ON_NOTIFY
7.下列不属于MFC消息的类型的是(D)
A)窗口消息B)控件通知消息
C)命令消息D)循环消息
8.下列关于Windows消息机制,说法正确的是(C)。
A.具体的应用程序截获相应的消息,并进行处理
B.窗口截获消息,并处理所有的消息
C.窗口截获消息,按照消息类型进行传递,由具体的对象处理
D.在Windows中,消息会传递到所有窗口
9.下列哪个MFC中的宏与消息映射无关?
(A)
A.DECLARE_DYNAMIC
B.DECLARE_MESSAGE_MAP
C.ON_COMMAND
D.END_MESSAGE_MAP
10.在MFC中,定义消息映射架构的基类是(D)。
A.CWnd
B.CView
C.CWinApp
D.CCmdTarget
11.简述消息映射表的构成,依靠消息映射表的消息处理过程?
第3章MFC应用程序框架
1.由MFCAppWizard创建的文档类是由()派生来的,视图类是由(C)派生来的。
A)CWinApp,CFrameWndB)CView,CDocument
C)CDocument,CViewD)CFrameWnd,CWinApp
2.在MFC消息机制中,1个单文档视图应用程序的消息处理优先级顺序是(A)。
A.视图、文档、主框架、应用程序
B.文档、视图、主框架、应用程序
C.应用程序、视图、文档、主框架
D.主框架、视图、文档、应用程序
3.关于Windows文档类的说法,下列正确的是()
A)文档类代表着用户使用的文件
B)一个文档类只能对应于一个视图类
C)文档类和CFile类都是对文件进行操作
D)一个文档类可以对应多个视图类
4.多文档界面的文档/视图架构应用程序使用的框架窗口类是:
()
A)CFrameWnd
B)CMDIFrameWnd
C)CSDIChildWnd
D)CSplitterWnd
5.文档/视图结构的分工?
文档相当于数据容器,视图相当于查看数据的窗口或是和数据发生交互的窗口。
(一个完整的应用一般由四个类组成:
CWinApp应用类,CFrameWnd窗口框架类,CDocument文档类,CView视类。
)
6.简述构成文档/视图结构应用程序框架的四个MFC派生类,并说出它们的功能。
假如工程名称为MyPrj,则MFCAppWizard会自动创建一下四个派生类来构成应用程序的框架。
.CFrame类的派生类CMainFrame;
.CWinApp类的派生类CMyPrjApp;
.CDocument类的派生类CMyPrjDoc;
.CView类的派生类CMyPrjView。
其中,CMyPrjDoc类对象用来存储和管理应用程序中的数据;
CMainFrame对象与CMyPrjView对象构成了应用程序的界面,CMainFrame对象只是CMyPrjView对象的容器,而CMyPrjView类的对象是用来显示文档与接收用户事件的;
CMyPrjApp类的对象是应用程序的全局对象,它是应用程序中各对象的容器,负责创建应用程序界面和消息循环。
7.在文档/视图结构的应用程序中,视图类对象是如何获取文档类对象中数据的?
是依靠视图类的成员函数GetDocument来返回文档对象指针,然后再通过该指针访问文档类的数据成员或函数成员。
8.在MFC对程序窗口功能的划分中你受到了什么启发?
由于简单的MFC应用程序框架没有把数据的存储部分和与用户的交互部分分开,所以类违背了面向对象程序设计的“单一职责原则”,从而使窗口类笨重杂乱,没有灵活性。
而在文档/视图结构中则由于遵循了“单一职责原则”,从而使文档类和视图类既有分工又有合作,代码清晰,程序架构灵活。
第4章图形
1.下列(C)不属于MFC提供的GDI图形设备类。
(A)CPen(B)CBrush
(C)CDC(D)CBitmap
2.下列四个类均从CDC基类派生而来,其中(D)适用与操作图元文件。
(A)CPaintDC(B)CClientDC
(C)CWindowDC(D)CMetaFileDC
3.下列语句设置字体颜色为绿色,并设置背景色为蓝色,其中正确的为(C)
(A)pDC->
SetBkMode(TRANSPARENT);
pDC->
SetTextColor(RGB(0,255,0));
SetBkColor(RGB(0,0,255));
(B)pDC->
SetBkMode(OPAQUE);
(C)pDC->
(D)pDC->
pDC->
4.InvalidateRect的作用是(B)
A.删除一个矩形
B.使一个矩行区域变为无效,从而可以重绘
C.使一个矩形区域变为无效,从而释放部分GDI资源
D.擦除一个矩形区域
5.以下函数中不受画刷影响的函数是:
(C)
A.RectangleB.Ellipse
C.LineToD.Polygon
6.以下选项中,GDI不能支持的是:
(B)
A.位图B.Flash动画
C.直线和曲线D.文字
7.在MFC中封装的CDC基类中,提供了丰富的图形绘制的成员函数,其中:
绘制一条直线段,并将绘图初始位置设置为线段终点的成员函数名为:
();
绘制一个矩形的成员函数名为:
(),在一个指定位置,输出一个字符串的成员函数名为:
()。
8.当程序中某个函数改变了数据而需要重新绘制客户区时,OnDraw()函数不会被自动调用,这时需要使用()间接调用。
9.Invalidate()要重绘整个窗口客户区,当数据更新很快时,这样会引起屏幕闪烁。
为了避免闪烁,可以怎样处理?
选择重绘区域的外包矩形,只更新外包矩形区域,减少闪烁,使用InvalidateRect()重绘客户区中的指定区域。
10.每次当窗口客户区需要重新绘制时,应用程序框架怎么处理?
发送WM_PAINT消息,调用OnDraw()函数进行重绘
11.创建新画刷时,如何定义颜色?
COLORREF是一个32-bit整型数值,它代表了一种颜色。
你可以使用RGB函数来初始化COLORREF。
如:
COLORREFcolor=RGB(0,255,0);
12.当创建了自己定义的画笔、画刷等GDI对象后,怎样将其选进设备环境?
要注意些什么?
CDC:
:
SelectObject(),注意保存原有画刷与画笔,以便恢复,如:
CPenNewPen(PS_SOLID,1,RGB(255,0,0)),*pOldPen;
pOldPen=pDC->
SelectObject(&
NewPen);
//将创建对象选入设备环境
SelectObject(pOldPen);
//恢复原来的GDI对象
13.在OnDraw()函数以外的函数中,怎样在客户区中显示数据?
使用CClientDC类创建客户区的设备环境句柄,如:
CClientDCdc(this)或GetDC(),如:
CDC*pDC=GetDC()
14.Windows应用程序常用消息,产生单击鼠标左键的消息是(A)
AWM_LBUTTONDOWNBWM_RBUTTONUP
CWM_RBUTTONDBLCLKDWM_LBUTTONUP
15.输出文本之前要获取字体的信息,如字符高度等,以确定输出格式和下一行字符的位置,获取当前使用字体信息函数(C)
A、GetFontMetricsB、GetFontMetric
C、GetTextMetricsD、GetTextMetric
16.为什么要使用DC?
为了屏蔽硬件输出设备的多样性,Windows系统为程序员提供了一个可以操作这些硬件却与硬件无关的接口,于是就可以把对不同设备的操作方法统一起来。
17.在MFC中CDC的派生类有哪几个,试说出它们的作用。
CclientDC应用在除WM_PAINT消息之外的消息处理函数中,提供窗口客服区的设备描述环境。
CmetaFileDC代表Windows图元文件的设备描述环境。
在创建与设备无关的并且可以回收的图像时使用这个类型的DC。
CpaintDC在WM_PAINT消息的处理函数OnDraw中使用的窗口用户区的设备描述环境。
CwindowDC提供在整个窗口内绘图的设备描述环境。
第5章MFC的通用类
1.定义了屏幕上或窗口中的一个点的X和Y坐标的数据类是(CPoint)
2.定义了一个矩形区域及其左上角和右下角的坐标的数据类是(CRect)
3.解释下列语句出的含义。
(1)CStrings;
(2)CStrings(“Hello,VisualC++6.0”);
(3)CStrings(‘A’,100);
(4)CStrings(buffer,100);
(5)CStrings(anotherCString)。
(1)构造一个长度为0的字符串对象。
(2)构造一个名称为s的字符串对象,并把字符串初始化为Hello,VisualC++6.0。
(3)构造一个名称为s的字符串对象,s字符串的内容是100个A。
(4)构造一个名称为s的字符串对象,s字符串的内容是buffer的头100个字符,再加一个NULL。
(5)构造一个名称为s的字符串对象,s字符串的内容和anotherCString字符串的内容相同。
4.执行:
Cstrings(Cstring(“Hello,world”).Left(6)+Cstring(“VisualC++”).Right(3));
语句后,s字符串中的内容是什么?
Hello,C++。
5.现有语句Cstrings(“My,name,is,C++”);
若想将s字符串中的“,”号全部更换成“”,将如何编写语句?
s.Replace(‘,’,‘’);
TextOut(1,1,s);
第8章资源
1.资源描述文件中ACCELERATORS定义的是(D)
A、菜单B、弹出式菜单
C、组合键D、加速键资源
2.定义位图的数据结构是(A)
A、BITMAPB、CBITMAP
C、JPGD、HBITMAP
3.在Windows消息机制中,菜单消息类型是:
(B)
A.WM_PAINTB.WM_COMMAND
C.WM_CREATED.WM_CLOSE
4.在菜单资源编辑界面中,要为菜单添加子菜单,需要设置的属性是(C)。
A.Separator
B.Grayed
C.Popup
D.Break
5.做菜单状态修改时,消息类型应该是(A)。
A.命令(COMMAND)消息
B.UPDATE_COMMAND_UI消息
C.WINDOWS消息
D.KEYDOWN消息
6.下列关于菜单消息ON_COMMAND_RANGE,说法正确的是(D)
A.一旦两个消息被设置了范围映射,则原有的消息映射函数会失去作用
B.两个消息被设置了范围映射,原有的消息映射函数仍然有作用
C.在设置范围映射时,如果参数表中第1个消息ID值大于最后一个消息的值(不为0),则消息不能被响应
D.在设置范围映射时,如果参数表中第1个消息ID值大于最后一个消息的值(不为0),则只能响应第1个消息
7.关于快捷键的设置,下列说法正确的是(C)。
A.只要在菜单的资源编辑菜单中添加了“&
P”的标识符,就可以在程序运行中使用Ctrl+P的组合按键来调用菜单
B.两个快捷键不能同时对应1个消息函数
C.如果1个快捷键同时对应两个消息ID,则只有前1个起作用,能够正常运行
D.如果1个快捷键同时对应两个消息ID,程序将不能正常运行
8.在MFC编程中,关于资源的定义,下列说法错误的是(C)
A)在资源编辑器中直接添加资源,缺省ID取值由系统指定
B)使用资源时,可以直接指定资源的ID值
C)在程序中,每个资源的ID的值可以取任意数
D)在资源编辑器中,资源的名称不必按照标准的资源命名方式进行
9.在Windows应用程序中,什么样的数据称为资源?
常用资源有哪些?
资源是一种数据。
在应用程序启动后,它们仍然驻留在硬盘上的可执行文件中,只是在应用程序需要时,才从可执行文件中读取它们。
常用的资源有菜单、图标、字符串、快捷键、位图等。
10.在VisualC++中,编辑资源数据可以使用哪两种方法?
答:
(1)在文本编辑器中直接对资源脚本文件和资源头文件进行编辑的方法。
(2)使用VisualC++的资源编辑器对资源脚本文件和资源头文件进行编辑的方法。
11.程序运行时,用户选中一个菜单项,会发出哪种消息?
根据什么来判断消息源?
用户选中菜单项时,会发出WM_COMMAND消息,系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFCWindows 应用 程序设计 复习题
![提示](https://static.bdocx.com/images/bang_tan.gif)