当前位置:首页 > VC++应用第2章习题
2.5 习 题
1.填空题
(1) MFC的全称是 Microsoft Foundation Class 。 (2) Windows是一个基于 事件 的消息驱动系统。
(3) 句柄是Windows使用的一种无重复整数,主要用来标识应用程序中的一个对象。 (4) 利用MFC AppWizard[exe]可以创建三种类型的应用程序,即 单文档、多文档和基于对话框的应用程序。
(5) 一个单文档的MFC应用程序框架一般包括5个类,它们分别是 应用程序类、框架窗口类、视图类、文档类 和文档模板类。
(6) Windows消息主要有3种类型,即 标准Windows消息、控件消息和命令消息 。 (7) MFC采用 消息映射 来处理消息。
(8) CWinApp提供4个成员函数来实现传统SDK应用程序WinMain( )函数完成的工作。 2.选择题
(1) Windows应用程序是按照( )非顺序的机制运行的。 A.事件→消息→处理 B.消息→事件→处理 C.事件→处理→消息 D.以上都不对
(2) 下面( )不是MFC应用程序外观的选项。
A.Docking toolbar B.Context-sensitive Help C.ActiveX Controls D.Printing and print preview (3) 对MFC类的下列描述中,( )是错误的。 A.应用程序类CWinApp是CWinThread的子类
B.窗口类CWnd提供了MFC中所有窗口类的基本功能 C.CView是CWnd类的子类
D.CDocTemplate类是Template类的子类 (4) 下列( )不是MFC消息映射机制有关的宏。 A.DECLARE_MESSAGE_MAP( )宏 B.BEGIN_MESSAGE_MAP( )宏 C.DECLARE_SERIAL( )宏 D.END_MESSAGE_MAP( )宏 (5)利用ClassWizard不能(D)
A. 建立新类 B.进行消息映射 C.增加类的成员变量 D。插入资源 3.判断题
(1) 窗口是Windows应用程序的基本操作单元,是应用程序与用户之间交互的接口环境,也是系统管理应用程序的基本单位。 ( t )
(2) 所有的Windows应用程序都是消息驱动的。 (t ) (3) 所有的Windows应用程序都是用MFC AppWizard[exe]向导创建的。 ( f )
(4) 使用MFC AppWizard[exe]向导创建应用程序框架时,向导生成的文件名和类名是不可更改的。 ( f )
(5) 消息映射是将消息处理函数与它要处理的特定消息连接起来的一种机制。 (t )
(6) 命令消息是由菜单项、工具栏按钮、快捷键等用户界面对象发出的WM_COMMAND消息。 ( t )
(7) 利用MFC编程时,所有的消息与消息处理函数的添加都必须采用ClassWizard类向导来完成。 ( f )
(8) WinMain函数是所有Windows应用程序的入口。 ( t ) (9) 用快捷键F9既可设置断点,又可取消断点。 ( t ) (10)调式程序时,会同时出现Variable窗口和Watch窗口。 ( t ) 4.简答题
(1) 简述MFC应用程序的执行过程。 MFC应用程序启动时,首先创建应用程序对象theApp。这时将自动调用应用程序类的构造函数初始化对象theApp,然后由应用程序框架调用MFC提供的WinMain( )主函数。在WinMain( )主函数中,首先通过调用全局函数GetApp( )来获取theApp的指针pApp,然后通过该指针调用theApp的成员函数InitInstance( )来初始化应用程序。在应用程序的初始化过程中,同时还构造了文档模板,产生最初的文档、视图和主框架窗口,并生成工具栏和状态栏。当InitInstance( )函数执行完毕后,WinMain( )函数将调用成员函数 Run( ),进入消息处理循环,直到函数Run( )收到WM_QUIT消息。MFC首先调用CWinApp类的成员函数ExitInstance( ),然后调用静态对象的析构函数,包括CWinApp对象,最后退出应用程序,将控制权交给操作系统。
在初始化的最后,应用程序将收到WM_PAINT消息,框架会自动调用视图类的OnDraw()函数绘制程序客户区窗口。这时,应用程序的基本窗口已经生成,应用程序准备接收系统或用户的消息,以便完成用户需要的功能。如果消息队列中有消息且不是WM_QUIT消息,则将消息分发给窗口函数,以便通过MFC消息映射宏调用指定对象的消息处理函数。如果消息队列中没有消息,函数Run( )就调用函数OnIdle( )进行空闲时间的处理。
(2) 简述文档/视图与其他类对象的关系。
在MFC应用程序中,文档类和视图类是用户最常用的两个类,它们之间是密切相关的。文档/视图体系结构是MFC应用程序框架结构的基石,它定义了一种程序结构,这种结构利用文档对象保存应用程序的数据,依靠视图对象控制视图显示数据,文档与视图的关系是一对多的关系,也就是说,文档中的数据可以以不同的方式显示。MFC在类CDocument和CView中为文档和视图提供了基础结构。CWinApp、CFrameWnd和其他类与CDocument和CView共同把所有的程序片段连在一起。文档/视图与其他类对象的关系如下图所示。
应用程序对象 文档模板对象 文档对象 框架窗口对象 视图对象
(3) 简述MFC消息映射机制。
MFC采用消息映射来处理消息。这种消息映射机制包括一组消息映射宏,用于把一个Windows消息和其消息处理函数联系起来。MFC应用程序框架提供了消息映射功能,所有从CCmdTarget类派生出来的类都能够拥有自己的消息映射。
(4) 消息WM_LBUTTONDOWN的消息映射宏和消息处理函数是什么?
消息WM_LBUTTONDOWN的消息映射宏是ON_WM_LBUTTONDOWN( ) ,消息处理函数是OnRButtonDown()。
(5) 如何自定义消息?如何发送自定义消息? Windows将所有的消息值分为4段:0x0000~0x03FF消息值范围段用于Windows系统消息,0x0400~0x7FFF段用于用户自定义的窗口消息,0x8000~0xBFFF段为Windows保留值,0xC000~0xFFFF段用于应用程序的字符串消息。
常量WM_USER(为0x0400)与第一个自定义消息值相对应,用户必须为自己的消息定义相对于WM_USER的偏移值,利用#define语句直接定义自己的消息,如下所示:
#define WM_USER WM_USER+3 ;// 自定义消息WM_USER
也可以调用窗口消息注册函数RegisterWindowMessage( )来定义一个Windows消息,由系统分配消息一个整数值。该函数原型为:
UINT RegisterWindowMessage(LPCTSTR lpString);
其中参数lpString是要定义的消息名,调用成功后将返回该消息的ID值。 发送自定义消息消息采用的函数是SendMessage( )函数。(文中未讲清楚)
共分享92篇相关文档