VC++课后答案_第1页
VC++课后答案_第2页
VC++课后答案_第3页
VC++课后答案_第4页
VC++课后答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、.第3章 MFC基本应用程序的建立 1. Windows的应用程序特点有哪些? 参考书(p143145)2. MFC的AppWizard(exe)提供了哪几种类型的应用程序? 使用MFC的AppWizard可以创建下面三种类型的应用程序: (1)单文档界面的应用程序(SDI,single document interface); (2)多文档界面的应用程序(MDI,multiple documents interface); (3)基于对话框的应用程序(dialog based)。3MFC有哪些机制?这些机制有什么用? 4用AppWizard创建一个多文档应用程序项目(MDI)Ex_MDIHe

2、llo,比较MDI与SDI有哪些区别? SDI应用程序由应用程序类(CWinApp)、框架窗口类(CFrameWnd)、文档类(CDocument)、视图类(CView)和文档模板类(CSinSleDocTemplate)共同作用。MDI应用程序与SDI应用程序的主要差别在于:MDI有CMDIFrameWnd和CMDIChildWnd两个框架窗口类,前一个派生CMainFrame类,负责菜单等界面元素的主框架窗口管理;后一个派生CChildFrame类,负责相应的文档及其视图的子框架窗口维护。而SDI由框架窗口类CFrameWnd派生CMainFrame类。5消息的类别有哪些?用ClassWi

3、zard如何映射消息? 窗口消息:窗口消息一般与创建窗口、绘制窗口、移动窗口和销毁窗口等操作相关。窗口消息的形式为WM_*,其中*的内容与每个窗口消息的内容有关。窗口消息只能被窗口或窗口对象处理,在MFC应用程序中,CView和CFrame及它们的派生类,以及自定义窗口类型都能处理窗口消息。命令消息:命令消息一般与处理用户的某个请求或执行用户的某个命令相关。在MFC应用中,凡是从基类CCmdTarget派生的类都能处理命令消息,不仅窗口类CView、CFrame,而且文档类、应用程序类都可处理命令消息。一般通过选择菜单项、单击工具栏按钮、按加速键可产生命令消息。控件消息:控件消息与控件窗口中某

4、个事件的发生相关。如改变文本框控件窗口的内容时,有一个通知窗口内容发生变化的控件事件产生。当选择列表框控件的某个选项时,也有一个通知选项发生改变的控件事件发生。6如何通过ClassWizard添加一个类? 第4章 对话框及常用控件1什么是对话框?它分为哪两类?这两类对话框有哪些不同?对话框是CDialog类的派生类,它的主要功能是输出信息和接收用户的输入。对话框是一个特殊类型的窗口,任何对窗口的操作都可以在对话框中进行。对话框与控件是密不可分的,在每个对话框内一般都有一些控件,对话框依靠这些控件与用户进行交互。对话框可以分为两种类型:一是模式对话框;二是无模式对话框。 模式对话框:所谓的模式对

5、话框是指对话框弹出时,用户必须向对话框进行相应的操作,在退出对话框之前,其所在的应用程序是不能往下执行的。 无模式对话框:无模式对话框是指对话框弹出后,一直保留在屏幕上,用户可以在对话框所在的应用程序中进行其他的操作。两种对话框在编辑器设计和使用ClassWizard进行编程时方法基本一致,但在创建和退出对话框窗口时的方式不同。 在创建时,模式对话框是由系统自动分配内存空间,因此在对话框退出时,对话框对象 自动删除。而无模式对话框则需要用户来指定内存,退出时还要自己删除对话框对象。 在退出时,两种对话框所用的终止函数不一样。模式对话框通过调用CDialog:EndDialog来终止,而无模式对

6、话框则是通过调用CWnd:DestroyWindow来终止。 需要说明的是:由于函数CDialog:OnOK()和CDialog:OnCancel()是调用EndDialog的,因此无模式对话框必须用DestroyWindow来重载OnOK()和OnCancel()两个函数。另外,需要正确删除表示对话框的C+对象。2什么是对话框模板、对话框资源和对话框类?对话框模板:MFC Develop Studio提供的对话框模板是用来创建用户对话框资源,用对话框模板创建的基本界面上,包括一个OK(确定)按钮和一个Cancel(取消)按钮等。可以移动、修改、删除这些控件,或者是增加新的控件到对话框模板,构

7、成应用程序所需的对话框资源。对话框资源:对话框资源是一个用户输入或取得数据的图形界面。这个图形界面是使用对话框编辑器在对话框模板上创建的,程序员可以在对话框模板上增加并编辑控件,生成对话框资源。当应用程序运行时,就可以得到一个对话框。对话框对象 MFC使用CDialog类来描述对话框,它是CWnd类的派生类。在CWnd类的基础上增加了数据交换的功能。当创建一个新的对话框资源后,使用ClassWizard可以创建一个对话框类的派生类。对话框对象实现了对话框和应用程序之间的通信。在应用程序中定义一个对话框对象后,在对话框关闭后,可以通过访问对话框对象的成员变量获得用户的输入数据。3对一个对话框编程

8、一般经过几个步骤?创建对话框资源;增加控件并设置控件属性;设计对话框类;模式或非模式方式显示对话框4什么是控件?根据控件的性质可以将控件分为几类?控件是系统内部定义的能完成特定功能的一些组件,控件能够放置在一个对话框中,提供应用程序与用户交互的某种功能的类,根据控件的特性和功能,一般可以将其分为3类:Windows通用控件、ActiveX控件以及MFC新增控件,Windows通用控件一般都是从CWnd派生而来的。5向对话框添加一个常用控件的方法有哪些?这些方法是否适用于ActiveX控件?6什么是DDVDDX技术?如何使用这种技术?为了能方便地操作一个控件,MFC采用了独特的DDX(Dynam

9、ic Data Exchange,动态数据交换)和DDV(Dynamic Data verify,动态数据交换)技术。DDX将数据成员变量与对话类模板内的控件相连接,这样使得数据在控件之间很容易传输。DDV用于数据的校验,它能自动校验数据成员变量数值的范围,并给出警告。7什么是控件的通知消息?它在编程中起哪些作用?当控件状态发生改变时,控件就会向其父窗口发送消息,这就是控件的通知消息。控件的通知消息可以是一条WM_COMMAND消息,也可以是一条WM_NOTIFY消息。8什么是按钮控件?它有几种类型? 按钮控件是CButton类的控件。按钮控件分为:推压式按钮BS_PUSHBUTTON;单选按

10、钮BS_RADIOBUTTON;复选按钮BS_CHECKBOX9什么是编辑框控件?它有哪些功能?编辑框是一个允许用户从键盘输入数据和编辑文本的矩形窗口。编辑框属于CEdit类的“窗口控件”,可以获得输入焦点。10编辑框控件中的EN_CHANGE和EN_UPDATE通知消息有何异同?u EN_CHANGE:在文本发生改变后产生。u EN_UPDATE:在文本发生改变,还未显示之前产生。11向某一个应用程序添加一个对话框,并在对话框中添加一个按钮和一个编辑框,当单击按钮后,在编辑框中显示“你好!”字样。12什么是列表框和组合框?它们的通知消息有何异同?列表框控件提供了文本项目的列表供用户选择,可以

11、单选也可以多选。列表框是CListBox类的;组合框可以看成是编辑框和列表框的组合,它提供了列表框,允许用户从中选择项目;也提供了编辑框,允许用户直接输入,它是CCombobox类的。 这两个控件发送的都是通知消息(WM_NOTIFY)。当列表框中发生了某个动作,比如双击了列表框中某项时,列表框就会向其父窗口发送一条通知消息;而在组合框的通知消息中,有的是列表框发出的,有的是编辑框发出的。13在例Ex_CommCtrls的CListBoxDlg对话框中,如果使登记的成绩是4门课程,则对话框中的控件应如何添加?代码应如何修改?14什么是滚动条、进展条、滑动条和旋转按钮控件?滚动条:是CSroll

12、Bar类的控件,它有一个独立的窗口,两端有两个箭头按钮,中间有一个可移动的滚动块 ,具有直接的输入焦点,分为垂直滚动条和水平滚动条两种类型。进展条:用于说明一个操作的进度,在操作过程中不断地从左到右填充进展条,可以让用户看到还有多少任务要完成。滑动条:由滑动块和可选的刻度线组成的,它是CSliderCtrl 类的。旋转按钮控件:是CSpinButtonCtrl类的,由一对箭头按钮组成,它通常与一个相伴的控件一起使用。15什么是旋转按钮的“伙伴”控件?如何设置?与旋转按钮控件一起使用的控件称为“伙伴(buddy)控件”, 单击旋转按钮控件的箭头按钮,可以增大或减小其伙伴控件中某个值。伙伴(bud

13、dy)控件的设置有两种方法:SetBuddy:设置旋转控件的伙伴窗口。在对话框中用Ctrl+D进行设置16在MFC中,通用对话框有哪些?如何在程序中使用它们?Windows提供了一组标准用户界面对话框,它们都有相应的MFC库中的类来支持,所有这些通用对话框类都是从一个公共的基类CCommonDialog派生而来的。 MFC的涌用对话框17如果消息对话框只有“是”和“否”两个按钮,则如何设置MessageBox函数的参数? 答:可以将MessageBox函数中的参数nType设置为MB_YESNO。第5章 菜单、工具栏和状态栏1菜单有哪些常见的规则? P221为了使Windows程序更容易操作,

14、菜单的显示都遵循下列一些规则:若单击某菜单项后,将弹出一个对话框,那么在该菜单项文本后有“”。若某项菜单有子菜单,那么在该菜单项文本后有。若菜单项需要助记符,则用括号将带下画线的字母括起来。助记符与Alt构成一个组合键,当按住“Alt”键不放,再敲击该字母时,对应的菜单项就会被选中。若某项菜单需要快捷键的支持,则一般将其列在相应菜单项文本之后。 2.什么是助记符?它是如何在菜单中定义的? P221菜单项的助记符是用括号和带下画线的字母括起来的符号,助记符与Alt构成一个组合键。3菜单项的消息有哪些?菜单项产生的消息有:COMMAND 消息和UPDATE_COMMAND_UI消息。4若对同一个菜

15、单用Class Wizard分别在视图类和主框架窗口类CMainFrame都处理其 COMMAND消息,并在它们的函数中添加相同的代码,则当用户选择该菜单后,会有什么样的结果?为什么?命令消息处理的优先级别为:命令视图类文档类文档模板类框架窗口类应用程序类。因此,视图类的消息处理函数会执行,而5.什么是键盘快捷键?它是如何定义的?键盘快捷键也称为加速键,加速键一般是几个按键的组合,用于激活特定的命令。用Ctrl+R进入资源编辑器,选择Accelerator的资源项,双击IDR_MAINFRAME,进行加速键资源的添加。6什么是快捷菜单?用程序实现一般需要哪些步骤? 快捷菜单也称为浮动式弹出菜单

16、,即按下鼠标右键时,就会相应地弹出一个菜单。 用CMenu:TrackPopupMenu和资源编辑器可以创建这样的菜单。具体操作步骤如下:用Ctrl+R进入资源编辑器,新建一个菜单资源;在视图类或其他接收鼠标右键单击的窗口类中添加WM_CONTEXTMENU消息控制函数;编辑代码如下:CMenu menu; /菜单项目是属于CMenu类的 menu.LoadMenu(IDR_MENU1); /加载菜单资源 menu.GetSubMenu(0)-TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this)7如何使

17、一个工具按钮和某菜单项命令相结合? 将工具栏上按钮的ID设置成和菜单项ID一样即可。8状态栏的作用是什么?状态栏的窗格分为几类?如何添加和减少相应的窗格?状态栏是一条位于应用程序的主窗口底部的水平条,可以分割成几个窗格,用来显示应用程序的当前状态信息或提示信息。状态栏窗格分为“信息行窗格”和“指示器窗口”。要增加一个信息行窗格,则只需在状态栏数组中适当的位置增加一个ID_SEPARATOR标识即可;要增加指示器窗格,则在状态栏数组的适当位置增加一个在“字符串表”中定义过的资源ID。若要减少窗格,只需减少数组元素即可。 9如何在状态栏的窗格显示文本?可以调用CStatusBar:SetPaneT

18、ext函数更新任何窗格中的文本。 10若状态栏只有一个用户定义的指示器窗格(其ID号为ID_TEXT_PANE),应如何定义?若当用户在客户区双击鼠标时,在该窗格中显示“双击鼠标”字样,则应如何编程?答:步骤:首先建立一个SDI应用程序,然后:用Ctrl+R进入资源编辑器,新建一个字符串资源,其ID为ID_TEXT_PANE;打开MainFrm.cpp文件,删除状态栏数组中缺省的元素,并增加一个为ID_TEXT_PANE的元素;为了使指示器窗格填满整个状态栏,可以在CMainFrame类的OnCreate函数中,添加以下代码:m_wndStatusBar.SetPaneInfo(0,ID_TE

19、XT_PANE,SBPS_STRETCH,0);将CMainFrame类的的成员变量m_wndStatusBar由protected类型改为public型;在SDI视图类中加入:#include MainFrm.h 用Ctrl+W进入类向导,在SDI视图类中映射WM_LBUTTONDBCLK的消息处理函数,并增加代码:CMainFrame *pFrame=(CMainFrame *)AfxGetApp( )-m_pMainWnd; CStatusBar *pStatus=&pFrame-m_wndStatusBar; if (pStatus)pStatus-SetPaneText(0,双击鼠标

20、)11什么是命令更新消息?它的作用是什么?UPDATE_COMMAND_UI消息又称为“更新命令UI消息”,该消息映射函数中有一个CCmdUI类的对象pCmdUI,CCmdUI类中包含了一个指向菜单项或工具栏按钮的指针,于是利用该指针对菜单项或工具栏按钮的显示形式进修改。第6章 框架窗口、文档和视图1什么是主窗口和文档窗口?主窗口又称为“主框架窗口”,是应用程序直接放置在桌面上的那个窗口,每个应用程序只能有一个主窗口,主框架窗口的标题栏上往往显示应用程序的名称。当用MFC 程序向导创建单文档SDI或多文档MDI应用程序时,主窗口类名是CMainFrame ,源文件名是MainFrm.h和Mai

21、nFrm.cpp。文档窗口是CDocument类的派生类,只能出现在主窗口之内,即主窗口是文档窗口的工作平台。文档窗口可以包含一个文档或一个数据文件等。在一个主窗口中可同时打开几个文档窗口。2窗口的风格分为哪两类?各举一例。 窗口风格有一般风格(以WS_为前缀)和扩展风格(以WS_ EX_为前缀)两种形式。 例如:WS_ORDER表示窗口含有边框,WS_EX_MDICHILD表示创建一个 MDI子窗口。3.改变窗口风格的方法有哪些?在用MFC AppWizard创建SDI或MDI应用程序过程的第四步中进行设置;在CMainFrame类的PreCreateWindow函数中有个表示窗体的引用变量

22、cs,利用它可以修改窗体的风格;使用ModifyStyle和ModifyStyleEx:它们都是CWnd类的成员函数,可以更改窗口的风格,ModifyStyleEx还可更改窗口的扩展风格。4窗口状态的改变方法有哪些?在应用程序类的InitInstance函数中,用ShowWindow改变窗口的显示状态;用CWnd类提供的成员函数SetWindowPos、MoveWindow、CenterWindow都可以改变窗口的显示状态;5若将主窗口的大小设置为屏幕的14大小,并移动到屏幕的右上角,应如何实现?答:在CMainFrame类的PreCreateWindow函数中添加代码:cs.cy= :GetSystemMetrics(SM_CYSCREEN)/2; cs.cx= :GetSystemMetrics(SM_CXSCREEN)/2; cs.y=0; cs.x=(cs.cx*2-cs.cx);6若将多文档的文档窗口的大小设置为主窗口客户区的14大小,并移动到主窗口客户区的右上角,应如何实现? 答:在CMainFrame类的P

温馨提示

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

评论

0/150

提交评论