面向对象程序设计C复习题_第1页
面向对象程序设计C复习题_第2页
面向对象程序设计C复习题_第3页
面向对象程序设计C复习题_第4页
面向对象程序设计C复习题_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计C+复习题一、单选题1对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( D )A. 公有类型 B. 私有类型 C. 保护类型 D. 友元类型 2下列关于多态性的描述,错误的是( C )A. C+语言的多态性分为编译时的多态性和运行时的多态性 B. 编译时的多态性可通过函数重载实现C. 运行时的多态性可通过模板和虚函数实现D. 实现运行时多态性的机制称为动态绑定3在C+语言中,数据封装要解决的问题是( D )A. 数据的规范化 B. 便于数据转换C. 避免数据丢失 D. 防止不同模块之间数据的非法访问4使用private修饰的成员变量,以下说

2、法正确的是( A )A. 只能由本类中的函数使用,不能被外面的程序所访问。B. 可以由本类中的函数使用,也可以被外面的程序所访问。C. 只能由本类和派生类中的函数使用。D. 可以在主函数中使用。5对类的构造函数和析构函数描述正确的是( A )A. 构造函数可以重载,析构函数不能重载B. 构造函数不能重载,析构函数可以重载C. 构造函数可以重载,析构函数也可以重载D. 构造函数不能重载,析构函数也不能重载6下面对静态数据成员的描述中,正确的是( A )A. 静态数据成员是类的所有对象共享的数据B. 类的每个对象都有自己的静态数据成员C. 类的不同对象有不同的静态数据成员值D. 静态数据成员不能通

3、过类的对象调用7在VC+语言类体系中,不能被派生类继承的有( B )A. 转换函数B. 构造函数C. 虚函数D. 静态成员函数8下面关于句柄正确的说法是( A )A. 句柄是一个标识Windows资源和设备等对象的变量。B. 句柄是用户程序自定义的数据类型。C. 用户程序使用句柄时不需要定义。D. 句柄仅仅是一个抽象的概念,程序中不能使用句柄。9下面关于动态链接库正确的说法是( B )A. 动态链接库提供的函数,在编译阶段能够连接到应用程序中。B. 动态链接库提供的函数,在运行阶段能够连接到应用程序中。C. 动态链接库本身不能单独设计、编译和调试。D. 动态链接库的使用使得程序缺乏灵活性。10

4、下面关于MFC应用程序中InitInstance函数正确的说法是( D )A. 该函数由用户定义。B. 该函数不需要用户程序覆盖。C. 该函数在WinMain函数内被显式调用。D. 通过应用程序类的全局指针自动调用。11为了在程序中显示一个模式对话框,应使用CDialgl类的成员函数( C )A. ShowWindow()B. Create()C. DoModal()D. InvalidateRect()12为了在程序中显示一个无模式对话框,应使用CWnd类的成员函数( A )A. ShowWindow(SW_NORMAL)B. Create()C. DoModal()D. Invalidat

5、eRect()13对于模式对话框的缺省按钮“OK(确定)”,下面哪种说法是正确的?( B )A. 单击“OK”,系统认定用户在对话框中的选择或输入无效,对话框退出。B. 单击“OK”,系统认定用户在对话框中的选择或输入有效,对话框退出。C. 单击“OK”,对话框照常运行。D. 单击“OK”,对话框暂停运行。14设有语句int i=MessageBox("MFC对话框","提问",MB_YESNO|MB_ICONQUESTION);,下面哪种说法是正确的?( C )A. 消息对话框有两个按钮“确定”和“取消”,单击“确定”返回IDOK。B. 消息对话框有一

6、个按钮“确定”,单击“确定”返回IDOK。C. 消息对话框有两个按钮“是”和“否”, 单击“是”返回IDYES。D. 消息对话框有一个按钮“是”, 单击“是”返回IDYES。15一个无模式对话框在退出时,应写的代码是( C )A. DestroyWindow();B. delete this;C. DestroyWindow();delete this;D. CloseWindow();16在编辑框内用代码实现剪贴板功能,下面哪个说法是正确的( D )A. 使用UNIT类型变量访问剪贴板函数B. 使用CString类型变量访问剪贴板函数C. 使用int类型变量访问剪贴板函数D. 使用CEdit

7、类型变量访问剪贴板函数17关于DDX/DDV技术,下面哪个说法是正确的。( D )A. 用户只能为一个控件关联一个变量B. 用户可以为同一个控件关联多个变量,变量名可以相同,类型必须不同。C. 用户可以为同一个控件关联多个变量,类型可以相同,变量名必须不同。D. 用户可以为同一个控件关联多个变量,但必须保证变量名不同且类型不同。18一个Button控件同时具有OnCommand和BN_CLICKED两个消息处理函数,下面哪个说法是正确的。( B )A. 优先执行BN_CLICKED消息处理函数B. 优先执行OnCommand消息处理函数C. 同时执行D. 编译错19关于函数CListBox:

8、GetText( int nIndex, LPTSTR lpszBuffer ),下面的说法哪个是正确的( C )A. 取列表框中选中项的内容B. 取列表框中选中项的索引C. 取列表框中索引为nIndex的内容,送lpszBufferD. 取列表框中内容为lpszBuffer的索引,送nIndex20关于函数CButton:SetCheck (1),下面的说法哪个是正确的( A )A. 设置复选按钮为选中状态B. 设置复选按钮为非选中状态C. 设置复选按钮为不确定状态D. 该函数不能设置复选按钮状态21关于对话框应用程序的初始化代码,下面哪个说法是正确的( B )A. 初始化代码应放在WinM

9、ain()函数中B. 初始化代码应放在OnInitDialog()函数中C. 初始化代码应放在对话框类的构造函数中D. 初始化代码应放在用户自定义函数中22关于函数CProgressCtrl:SetPos( int nPos ),下面的说法哪个是正确的( C )A. 设置进展条的步长B. 设置进展条范围的上限C. 设置进展条初始位置D. 返回进展条当前位置23关于函数CListBox:GetItemDataPtr( int nIndex ),下面的说法哪个是正确的( A )A. 取出与索引nIndex的列表项相关联数据的指针,类型为void*B. 取出与索引nIndex的列表项相关联数据的指针

10、,类型CString*C. 取出与索引nIndex的列表项相关联数据的指针,类型int*D. 取出索引nIndex的列表项字符串24关于函数SetSel(0,-1),下面的说法哪个是正确的( C )A. 在编辑框内选中第0行文本B. 在编辑框内未选中任何文本C. 在编辑框内选中全部文本D. 参数范围错25关于滚动条的WM_VSCROLL消息映射,下面的说法哪个是正确的( B )A. 在CScrollBar类中进行B. 在CDialog类中进行C. 在CFrameWnd类中进行D. 在CView类中进行26关于函数CProgressCtrl: SteiIt(),下面的说法哪个是正确的( A )A

11、. 使进展条前进一个步长B. 使进展条后退一个步长C. 设置进展条初始位置D. 返回进展条当前位置27关于函数CListBox: GetCurSel( ),下面的说法哪个是正确的( B )A. 取列表框中选中项的内容B. 取列表框中选中项的索引C. 删除列表框中的选中项D. 在列表框中添加一项28关于函数UpdateData(),下面哪个说法是正确的( B )A. 数据从相关联的成员变量向控件传输B. 数据从控件向相关联的成员变量复制C. 实现不同控件之间的数据交换D. 实现与不同控件相关联变量的数据交换29关于函数CListBox: ResetContent( ),下面的说法哪个是正确的(

12、D )A. 更新列表框中的内容B. 删除列表框中的第1项C. 删除列表框中的最后1项D. 删除列表框中的所有项,即清空列表框30为使工具栏按钮与对应菜单项功能一致,下面哪个说法是正确的( B )A. 工具栏按钮与对应菜单项的ID相同,工具栏按钮必须重写代码。B. 工具栏按钮与对应菜单项的ID相同,工具栏按钮不用重写代码。C. 工具栏按钮与对应菜单项的ID必须不同,工具栏按钮必须重写代码。D. 工具栏按钮与对应菜单项的标题相同,工具栏按钮不用重写代码。31关于消息WM_CONTEXTMENU的说法,下面哪个说法是正确的( A )A. 单击鼠标右键时发送B. 单击鼠标左键时发送C. 双击鼠标右键时

13、发送D. 双击鼠标左键时发送32关于消息BN_CLICKED的说法,下面哪个说法是正确的( B )A. 单击鼠标右键时发送B. 单击鼠标左键时发送C. 双击鼠标右键时发送D. 双击鼠标左键时发送33关与函数OnDraw,下面哪个说法是正确的( A )A. 窗口首次生成时自动调用B. 窗口生成后调用C. 窗口消失前调用D. 窗口消失后调用34关与函数OnNewDocumen,下面哪个说法是正确的( A )A. 创建文档时调用B. 打开文档时调用C. 修改文档时调用D. 视图第1次连接到文档后,初始显示视图前调用该函数35关与函数OnInitialUpdate,下面哪个说法是正确的(D )A. 创

14、建文档时被调用B. 打开文档时被调用C. 修改文档时被调用D. 视图第1次连接到文档后,初始显示视图前调用该函数36对滑动条控件有设置SetRange(0,100,TRUE); SetTicFreq(4); ,下面的说法哪个是正确的。( B )A. 滑动条的刻度线有25根B. 滑动条的刻度线有26根C. 滑动条的刻度线有4根D. 滑动条的刻度线不确定37定义逻辑字体的结构变量,下面哪个定义是正确的?( B )A. CFont cfB. LOGFONT lfC. COLORREF rcD. LOGBRUSH cp38设有定义CRect re(10,20,50,60) ,下面哪个说法是正确的?(

15、A )A. 定义的矩形左上角顶点坐标是(10,20),右下角顶点坐标是(50,60)B. 定义的矩形左下角顶点坐标是(10,20),右上角顶点坐标是(50,60)C. 定义的矩形右上角顶点坐标是(10,20),左下角顶点坐标是(50,60)D. 定义的矩形右下角顶点坐标是(10,20),左上角顶点坐标是(50,60)39下列说法正确的是( B )A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 B. 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 C. 类的内联函数必须在类体内定义D. 类的内联函数必须在类体外通过加关键字inline定义40下列关于虚基类的描述,

16、错误的是( B ) A. 设置虚基类的目的是为了消除二义性 B. 虚基类的构造函数在非虚基类之后调用 C. 若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用 D. 若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数二、添空题1在面向对象方法中,类之间共享属性和操作的机制称为_继承_。2通过使用new和delete两个运算符进行的分配为 动态存储 分配。3在面向对象的程序设计中,类描述的是具有相似性质的一组 对象 。4在C+中封装性、继承性和 多态性 是面向对象思想的主要特征。5MFC框架程序是从 WinMain 函数开始执行的。6一个const对象只

17、能访问 const 成员函数。7静态成员函数、内联函数和构造函数不能声明为 虚函数 。8在函数体之前加 const 关键字可以防止覆盖函数,改变数据成员的值。9设在程序中使用如下语句申请了一个对象数组:Point *ptr=new Point2;,则在需要释放ptr指向的动态数组对象时,所使用的语句是 deleteptr; 。10设有下列代码int a=0;double b=0;cin>>a>>b;当用键盘输入1.25时,b= 0.25 。11CWnd的成员函数GetCheckedRadioButton的功能是返回按钮组中 被选中按钮的ID 。12消息WM_COMMAN

18、D的参数wParam的高位字是控件的 通知代码 。13消息映射宏DELCARE_MESSAGE_MAP的作用是用来声明对 消息映射 的支持。14CComboBox的成员函数GetCurSel( ),在组合框中没有选项时返回 CB_ERR 。15CListBox的成员函数InsertString(-1, “辽宁省”),把“辽宁省”添加到列表框中的位置是 最后 。16CWnd的成员函数GetDlgItemText的功能是获取控件的 标题文本 。 17消息SB_THUMBTRACK是在滚动条 拖动滚动块 时发送 。 18动态链接库可以提高程序模块的灵活性,因为它本身可以单独设计、 编译和调试 。 1

19、9Windows提供的图形界面接口GDI,使得用户能方便实现图形和文本的输出,不必关心与系统相连的 外部设备特性 。20句柄是一个对操作系统资源的 间接引用 。 21每个MFC应用程序都需要 afxwin.h 头文件,该头文件定义了MFC的所有类、函数、变量等。22每个Win32应用程序都需要 Windows.h 头文件,该头文件及其所包含的文件定义了Windows所有的数据类型、函数调用、数据结构和符号常量等。23可以使用ShowWindow(SW_NORMAL)显示无模式对话框,它是 CWnd 基类的成员函数。24在VC+6.0中,菜单、工具栏、对话框、图标等都被视为 资源 。25Wind

20、ow中的每一个资源都是由标识符来定义的,其中的英文字母 不区分大小写 。 26列表框中第1项的索引值是 0 。27CListBox的成员函数GetCurSel( ),在列表框中没有选项时返回 LB_ERR 。28消息SB_LINEDOWN是在滚动条 向下滚动一行 时发送 。29如工具栏按钮属性的提示项是“加法运算n加法”,则状态栏显示信息为 加法运算 。30GDI提供高层绘图函数,支持与 设备 无关的图形显示。三、问答题1简述Windows编程特点。答案:Windows程序有如下特点:消息驱动机制在Windows应用程序中,通过接收消息、分发消息、处理消息来和用户进行交互。图形设备接口(GDI

21、)Windows提供了一个抽象的图形界面接口,称为图形设备界面,或简称GDI。使得用户直接利用系统的GDI函数就能方便实现图形和文本的输出,不必关心与系统相连的外部设备特性。基于资源的程序设计Windows应用程序包含众多图形元素,如光标、菜单、工具栏、位图、对话框等,统称为资源。VC+提供了很多编辑器对这些资源进行编辑,使得用户可以方便地使用这些资源。动态链接库动态链接库提供的函数,能在Windows程序运行时进行装载和连接。可提高程序模块的灵活性。2简述MFC程序的运行机制。答案:程序运行时,首先定义全局程序对象,系统调用缺省的应用程序类的构造函数,该函数把全局程序对象的地址保存在一个全局

22、指针中。此时WinMain()函数接收控制,首先通过全局指针调用应用程序类的InitInstance()函数完成应用程序的初始化。InitInstance()函数执行结束,屏幕上显示窗体,WinMain()进入消息主循环,等待接收用户消息。收到消息后转到系统的Run()函数处理。当用户点击退出按钮时,WinMain()调用ExitInstance()函数退出。3什么是MFC的消息映射机制?简述映射一个消息的过程。答案:所谓消息映射机制,即指MFC类中将消息与消息处理函数联系起来,一一对应的机制。映射一个消息的过程由三个部分组成:在处理消息的类中,使用消息宏LARE_MESSAGE_MAP()

23、声明对消息映射的支持,并在该宏之前声明消息处理函数。 使用BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏在类声明之后的地方定义该类支持的消息映入口点,所有消息映射宏都添加在这里,当然不同的消息MFC都会有不同的消息映射宏。 定义消息处理函数,在该函数内添加消息处理代码。4 简述DDX/DDV技术是如何实现数据交换和数据校验的?使用时应注意什么问题?答案:DDX技术:DDX将数据成员变量同对话框模板内的控件相连接,使得数据在控件之间很容易地传输。 具体使用如下两个函数:UpdateData(TRUE)或UpdateData()实现控件数据向相关联的变量复制。 UpdateD

24、ata(FALSE)实现数据由相关联的变量传给控件。DDV技术:DDV技术能根据用户为与控件相关联的变量设定的取值范围,自动对数据进行校验,当超出范围时,发出相应的警告。注意事项:在DDX/DDV技术中,允许用户为同一个控件关联多个变量,但必须保证这些变量名是互不相同的,且这些变量在同一个类型不能有多个变量。5什么是静态控件?有哪些静态控件?答案:静态控件:用来显示一个字符串、框、矩形、图标,位图或增强的图元文件。它可以用来作为标签、框或用来分割其它的控件。一个静态控件一般不接收用户输入,也不产生通知消息。静态控件种类:静态文本,组框,静态图片。6什么是按钮控件?有哪些按钮控件?简述它们的不同

25、。答案:按钮控件:用来实现一种开与关的输入。常见的按钮有三种类型:按键按钮,单选按钮,复选框按钮按键按钮通常可以立即产生某个动作,执行某个命令,因此也常被称为命令按钮。单选按钮通常成组出现,分组后每组中只能有一个被选中。复选框通常成组出现,复选框被选中时,复选框中就加上一个标记,复选框常用的有选中和未选中两种状态,用户可以同时选中多个复选框。7 什么是文档的序列化?其过程是怎样的?答案:文档的序列化:使一个类可序列化就是使其具有CArchive的序列化功能,即可以在文档类的Serialize函数中直接通过CArchive引用变量进行该数据的读写操作。序列化过程:在MFC中,一个可序列化的类必须

26、是CObject的一个派生类,且在类声明中,需要包含DECLARE_SERIAL宏调用,而在类的实现文件中包含IMPLEMENT_SERIAL宏调用,这个宏有三个参数:前两个参数分别表示类名和基类名,第三个参数表示应用程序的版本号。最后还需要重载Serialize函数,使该类的数据成员进行相关序列化操作。8简述单文档应用程序中是如何实现文档读写的?答案:当MFC AppWizard创建文档应用程序时,它会自动将“文件(File)”菜单中的“打开(Open)”命令(ID号为ID_FILE_OPEN)映射到CWinApp的OnFileOpen成员函数。 当MFC AppWizard创建应用程序时,

27、它会自动将“文件(File)”菜单中的“保存(Save)”命令与文档类CDocument的OnFileSave函数在内部关联起来,但用户在程序框架中看不到相应的代码。 打开和保存文档时,系统都会自动调用Serialize函数。事实上,MFC AppWizard在创建文档应用程序框架时已在文档类中重载了Serialize函数,通过在该函数中添加代码可达到实现数据序列化的目的。 9函数OnInitialUpdate和OnNewDocument都可以对文档进行初始化工作,叙述它们的区别。答案:函数:OnInitialUpdate是当应用程序被启动时,或当用户从“文件”菜单中选择了“新建”或“打开”时

28、,视图第1次连接到文档后,在初始显示视图前调用该函数,用户可重载此函数对文档所需信息进行初始化。这里的初始化主要是对与文档相联系的视图进行,如设置视图大小、是否有滚动功能等。函数OnNewDocument是当用户从“文件”菜单中选择“新建”命令时,框架首先构造一个文档对象,然后调用该函数,用户可在这里对文档数据进行初始化。10什么是列表框和组合框控件?组合框控件有哪些类型?答案:列表框:是一个列有许多项目让用户选择的控件。用户可以在其中选择一个或多个项,列表框中的项目数目可灵活变化,程序运行时可根据需要随时增加或删除。当列表框中项目很多时,自动提供滚动功能。组合框:常用的项目在组合框中显示,用

29、户可以选择其中一项。同时还配有一个编辑框,输入组合框中没有的项。组合框中的项目数目可灵活变化,程序运行时可根据需要随时增加或删除。组合框类型:简单组合框、下拉式组合框和下拉式列表框。四、程序分析题1分析下面的程序要求:写出程序运行结果。说明语句*this = a;的含义。#include <iostream.h>class COnepublic:COne() x = y = 0;COne(int a, int b)x = a;y = b;void copy(COne &a);void print() cout<<x<<" , "&

30、lt;<y<<endl; private: int x, y;void COne:copy(COne &a) if (this = &a) return; *this = a; void main() COne one, two(3, 4); one.print(); one.copy(two); one.print();答案:0 , 03 , 4把形参a获得的某对象的值赋给操作该成员函数的对象。在本例中,就是将对象two赋给对象one。2设有一个对话框应用程序,对话框类名为CEx_RadioDlg,添加了一个Button按钮,ID号为IDC_BUTTON1和

31、4个Radio按钮,ID号分别为IDC_RADIO1IDC_RADIO4。分析下面的程序段:要求:在注释符号/后面对各条语句进行注释,说明该语句的作用。该函数在什么时候被调用?写出该函数完成的功能。void CEx_RadioDlg:OnButton1() CString str;UINT nID1 = GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO4); /GetDlgItemText(nID1, str); /MessageBox(str); /答案:UINT nID1 = GetCheckedRadioButton(IDC_RADIO1,IDC_RA

32、DIO4); /返回按钮组中被选中按钮的IDGetDlgItemText(nID1, str); /获取控件nID的标题文本,送strMessageBox(str); /用消息对话框显示str该函数在鼠标左键单击Button按钮时被调用。函数功能:获取按钮组中被选中按钮的标题文本,用消息对话框显示出来。3设有一个对话框应用程序,对话框类名为CEx_DlgCtrlsDlg。分析下面的程序:要求:在注释符号/后面对各条语句进行注释,说明该语句的作用。该函数在什么时候被调用?写出该函数完成的功能。BOOL CEx_DlgCtrlsDlg:OnInitDialog()CStatic *cs;cs=ne

33、w CStatic();cs->Create("Hello!",WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER,CRect(20,20,120,40),this);/CFont *font=this->GetFont();/cs->SetFont(font);/return TRUE;答案:cs->Create("Hello!",WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER,CRect(20,20,120,40),this);/创建静态控件,标题为"Hel

34、lo!",子窗体风格,带边框,文本局中,控件左上角顶点坐标为(20,20),宽120,高40,父类窗口为当前窗口(对话框)。CFont *font=this->GetFont();/获得对话框字体cs->SetFont(font);/用对话框字体设置静态控件字体函数OnInitDialog()在显示对话框之前执行,完成对话框的初始化。 该函数完成的功能:在对话框上创建一个具有指定风格的静态控件,标题为"Hello!"。4设有一个对话框应用程序,对话框类名为CEx_DlgCtrlsDlg,添加两个Button按钮,ID号分别为IDC_BUTTON1和ID

35、C_BUTTON2。分析下面的程序:要求:在注释符号/后面对各条语句进行注释,说明该语句的作用。该函数在什么时候被调用?写出该函数完成的功能。BOOL CEx_DlgCtrls1Dlg:OnCommand(WPARAM wParam, LPARAM lParam) WORD nCode=HIWORD(wParam); WORD nID=LOWORD(wParam); if(nID=IDC_BUTTON1)&&(nCode=BN_CLICKED) /MessageBox("你按下的是Button1"); if(nID=IDC_BUTTON2)&&

36、;(nCode=BN_CLICKED) /MessageBox("你按下的是Button2"); return CDialog:OnCommand(wParam, lParam); /答案:if(nID=IDC_BUTTON1)&&(nCode=BN_CLICKED) /如果控件标识符是IDC_BUTTON1并且事件是BN_CLICKED,执行下面语句。if(nID=IDC_BUTTON2)&&(nCode=BN_CLICKED) /如果控件标识符是IDC_BUTTON2并且事件是BN_CLICKED,执行下面语句。return CDialo

37、g:OnCommand(wParam, lParam); /把控件的消息交由其它函数处理,如OnButton1()。该函数在控件发出通知消息OnCommand时执行。 函数功能:鼠标单击“Button1”时,显示消息对话框,内容为"你按下的是Button1"。 鼠标单击“Button2”时,显示消息对话框,内容为"你按下的是Button2"。5设有一个单文档应用程序,IDR_MAINFRAME为菜单标识。下面是在框架类中添加的WM_CONTEXTMENU消息处理函数。分析下面的程序段:要求:在注释符号/后面对各条语句进行注释,说明该语句的作用。该函数在什

38、么时候被调用?写出该函数完成的功能。void CEx_SystemMenuView:OnContextMenu(CWnd* pWnd, CPoint point) CMenu mPop; mPop.LoadMenu(IDR_MAINFRAME); /CMenu* p=mPop.GetSubMenu(4); / p->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN,point.x,point.y,this); / 答案:void CEx_SystemMenuView:OnContextMenu(CWnd* pWnd, CPoint point) CM

39、enu mPop; mPop.LoadMenu(IDR_MAINFRAME); /装载菜单IDR_MAINFRAMECMenu* p=mPop.GetSubMenu(4); /取菜单第4项指针(从0开始),即“加减法”菜单。p->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN,point.x,point.y,this);/显示弹出式菜单/ point.x,point.y为菜单位置(鼠标位置),this为父窗口 在单文档应用程序窗口空白处,按下鼠标右键时执行该函数。 功能是显示快捷菜单,快捷菜单是菜单IDR_MAINFRAME的第4项(从0开始)6下

40、面是在关于状态栏设置的一段代码。要求:在注释符号/后面对各条语句进行注释,说明该语句的作用。该函数在什么时候被调用?写出该函数完成的功能。void CEx_StatusBarView:OnMouseMove(UINT nFlags, CPoint point) CString str;CMainFrame* pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; CStatusBar* pStatus=&pFrame->m_wndStatusBar; / if (pStatus) pStatus->SetPaneStyle(1, SB

41、PS_POPOUT); / str.Format("X=%d, Y=%d",point.x, point.y); pStatus->SetPaneText(1,str); / CView:OnMouseMove(nFlags, point);答案:void CEx_StatusBarView:OnMouseMove(UINT nFlags, CPoint point) CString str;CMainFrame* pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; CStatusBar* pStatus=&pFra

42、me->m_wndStatusBar; / 获得主窗口中的状态栏指针if (pStatus) pStatus->SetPaneStyle(1, SBPS_POPOUT); /设置状态栏风格str.Format("X=%d, Y=%d",point.x, point.y); pStatus->SetPaneText(1,str); /在状态栏第二个窗格显示文本str,str为鼠标位置CView:OnMouseMove(nFlags, point);该函数当鼠标在单文档窗口内移动时被调用,状态栏第二个窗格显示鼠标当前位置。7分析下面的程序要求:在注释符号/后面

43、对各条语句进行注释,说明该语句的作用。该函数在什么时候被调用?写出该函数完成的功能。BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)int cxScreen = :GetSystemMetrics(SM_CXSCREEN); int cyScreen = :GetSystemMetrics(SM_CYSCREEN); /下面两条语句的作用是cs.cx = cxScreen/2;cs.cy = cxScreen/2-150; /下面两条语句的作用是cs.x=(cxScreen-cs.cx)/2; cs.y=(cyScreen-cs.cy)

44、/2; cs.style &=WS_MAXIMIZEBOX; / 答案:BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)int cxScreen = :GetSystemMetrics(SM_CXSCREEN); int cyScreen = :GetSystemMetrics(SM_CYSCREEN); /下面两条语句的作用是设置主窗口宽为1/2屏宽、高为1/2屏幕高cs.cx = cxScreen/2;cs.cy = cxScreen/2-150; /下面两条语句的作用是设置主窗口左上角坐标,使窗口位于屏幕中央cs.x=(c

45、xScreen-cs.cx)/2; cs.y=(cyScreen-cs.cy)/2; cs.style &=WS_MAXIMIZEBOX; /去处最大化按钮当窗口创建之前,系统自动调用该函数。该函数完成对窗口风格的设置,使窗口宽为1/2屏宽、高为1/2屏幕高,位于屏幕中央,无最大化按钮。8分析下面的程序段要求:在注释符号/后面对各条语句进行注释,说明该语句的作用。该函数在什么时候被调用?写出该函数完成的功能。void CEx_FontView:OnDraw(CDC* pDC)LOGFONT lf;memset(&lf,0,sizeof(LOGFONT);lf.lfItalic=

46、1;CFont font;font.CreateFontIndirect(&lf); / pDC->SelectObject(&font); / pDC->TextOut(10,10,"我喜欢Visual C+!"); / 答案:void CEx_FontView:OnDraw(CDC* pDC)LOGFONT lf;memset(&lf,0,sizeof(LOGFONT);lf.lfItalic=1; CFont font;font.CreateFontIndirect(&lf);/用lf结构创建字体pDC->Select

47、Object(&font);/把字体装入设备环境pDC->TextOut(10,10,"Hello!");/在指定位置显示字符串窗口首次生成时,自动调用视图类函数OnDraw程序功能是在指定位置(10,10),用由lf结构创建的字体输出文本"Hello!"。9分析下面的程序要求:在注释符号/后面对各条语句进行注释,说明该语句的作用。该函数在什么时候被调用?写出该函数完成的功能。void CEx_PenView:OnDraw(CDC* pDC)CRect rc4(10,120,110,220); COLORREF color4=RGB(192

48、,0,0); / CBrush brush4=(HS_FDIAGONAL,color4);pDC->SelectObject(brush4); / pDC->Ellipse(rc4); / 答案:void CEx_PenView:OnDraw(CDC* pDC)CRect rc4(10,120,110,220); COLORREF color4=RGB(192,0,0); /设置颜色变量CBrush brush4=(HS_FDIAGONAL,color4);pDC->SelectObject(brush4); /把画刷装到设备环境中pDC->Ellipse(rc4);/

49、绘制圆,用画刷颜色填充圆窗口首次生成时,自动调用视图类函数OnDraw程序功能是在指定矩形rc4内绘制圆,用画刷颜色填充圆。10分析下面的程序要求:在注释符号/后面对各条语句进行注释,说明该语句的作用。该函数在什么时候被调用?写出该函数完成的功能。void CEx_PenView:OnDraw(CDC* pDC)CRect rc1(10,10,110,110); COLORREF color1=RGB(0,0,192); / CPen pen1(PS_SOLID,1, color1);pDC->SelectObject(pen1); / pDC->Rectangle(rc1); /

50、 答案:void CEx_PenView:OnDraw(CDC* pDC)CRect rc1(10,10,110,110); COLORREF color1=RGB(0,0,192);/设置颜色变量CPen pen1(PS_SOLID,1, color1);pDC->SelectObject(pen1);/把画笔装到设备环境中pDC->Rectangle(rc1);/用指定画笔绘制矩形窗口首次生成时,自动调用视图类函数OnDraw程序功能是在指定矩形rc1内,用所定义的画笔绘制矩形五、程序设计题1设计一个单文档应用程序,要求通过菜单打开通用字体对话框,按用户选择的字体、字号、颜色等

51、属性在窗口中显示字符串“我喜欢Visual C+!”。要求: 写出设计步骤 完成代码设计答案: 设计步骤使用MFC AppWizard(exe)向导创建一个单文档应用程序选中资源面板底端的ResourceView在资源树中选择并展开Menu结点,其中IDR_MAINFRAME为系统预定义菜单双击IDR_MAINFRAME打开菜单编辑器,增加一项设ID为ID_FONT建立菜单消息COMMAND的处理函数 编写代码void CEx_DialogFontView:OnFont() LOGFONT lf; memset(&lf, 0,sizeof(LOGFONT); strcpy ( lf.l

52、fFaceName, "Times New Roman"); CFontDialog dlg ( &lf,CF_EFFECTS | CF_SCREENFONTS, 0, this); if (dlg.DoModal() = IDOK )CClientDC dc(this); dlg.GetCurrentFont(&lf); CFont myfont; myfont.CreateFontIndirect(&lf); dc.SelectObject (&myfont); dc.SetTextColor(dlg.GetColor(); dc.Tex

53、tOut(100,100,"我喜欢Visual C+!"); 2设计一个对话框应用程序Ex_Check,保留“取消”按钮,标题改为“退出”,删除其它默认控件,添加1个命令按钮,4个复选框,一个组框。 初始运行“篮球”被选中;鼠标单击按钮“显示信息”时,用消息对话框显示选中的内容。运行界面如下: 要求: 写出设计步骤 完成代码设计答案: 设计步骤使用应用程序向导,建立一个对话框应用程序Ex_Check; 设计界面添加两个按钮,ID分别为IDC_BUTTON1和IDC_BUTTON2,标题为“显示信息”和“退出”;一个组框,标题为“爱好”;在组框控件内,添加4个复选框,ID为I

54、DC_CHECK1 IDC_CHECK4,标题分别为“篮球”、“足球”、“排球”、“棒球”;使用“布局”调整控件大小和位置。 生成两个按钮的消息BN_CLICKED的处理函数。 编写代码 在对话框初始化函数中写入初始化代码,保证初始运行时“篮球”被选中。BOOL CEx_CheckDlg:OnInitDialog()CButton* pBtn = (CButton*)GetDlgItem(IDC_CHECK1);pBtn->SetCheck(1);/或用CheckRadioButton(IDC_CHECK1,IDC_CHECK4,IDC_CHECK1);return TRUE; 在标题为“显示信息”按钮的消息BN_CLICKED处理函数中写入代码void CEx_CheckDlg:OnButton1() CString str1,str2; UINT nCheckIDs4 = IDC_CHECK1,IDC_CHECK2,IDC_CHECK3,IDC_CHECK4; CButton* pBtn; for (int i=0; i<4; i+) pBtn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论