收藏 分销(赏)

VC++课后答案.doc

上传人:快乐****生活 文档编号:4361740 上传时间:2024-09-13 格式:DOC 页数:12 大小:46KB
下载 相关 举报
VC++课后答案.doc_第1页
第1页 / 共12页
VC++课后答案.doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述
第3章 MFC基本应用程序得建立 1、 Windows得应用程序特点有哪些? 参考书(p143~145) 2、 MFC得AppWizard(exe)提供了哪几种类型得应用程序? 使用MFC得AppWizard可以创建下面三种类型得应用程序: (1)单文档界面得应用程序(SDI,single document interface); (2)多文档界面得应用程序(MDI,multiple documents interface); (3)基于对话框得应用程序(dialog based)。 3.MFC有哪些机制?这些机制有什么用? 4.用AppWizard创建一个多文档应用程序项目(MDI)Ex_MDIHello,比较MDI与SDI有哪些区别? SDI应用程序由应用程序类(CWinApp)、框架窗口类(CFrameWnd)、文档类(CDocument)、视图类(CView)与文档模板类(CSinSleDocTemplate)共同作用。MDI应用程序与SDI应用程序得主要差别在于:MDI有CMDIFrameWnd与CMDIChildWnd两个框架窗口类,前一个派生CMainFrame类,负责菜单等界面元素得主框架窗口管理;后一个派生CChildFrame类,负责相应得文档及其视图得子框架窗口维护。而SDI由框架窗口类CFrameWnd派生CMainFrame类。 5.消息得类别有哪些?用ClassWizard如何映射消息? ⑴窗口消息:窗口消息一般与创建窗口、绘制窗口、移动窗口与销毁窗口等操作相关。窗口消息得形式为WM_***,其中*得内容与每个窗口消息得内容有关。窗口消息只能被窗口或窗口对象处理,在MFC应用程序中,CView与CFrame及它们得派生类,以及自定义窗口类型都能处理窗口消息。 ⑵命令消息:命令消息一般与处理用户得某个请求或执行用户得某个命令相关。在MFC应用中,凡就是从基类CCmdTarget派生得类都能处理命令消息,不仅窗口类CView、CFrame,而且文档类、应用程序类都可处理命令消息。一般通过选择菜单项、单击工具栏按钮、按加速键可产生命令消息。 ⑶控件消息:控件消息与控件窗口中某个事件得发生相关。如改变文本框控件窗口得内容时,有一个通知窗口内容发生变化得控件事件产生。当选择列表框控件得某个选项时,也有一个通知选项发生改变得控件事件发生。 6.如何通过ClassWizard添加一个类? 第4章 对话框及常用控件 1.什么就是对话框?它分为哪两类?这两类对话框有哪些不同? 对话框就是CDialog类得派生类,它得主要功能就是输出信息与接收用户得输入。对话框就是一个特殊类型得窗口,任何对窗口得操作都可以在对话框中进行。对话框与控件就是密不可分得,在每个对话框内一般都有一些控件,对话框依靠这些控件与用户进行交互。 对话框可以分为两种类型:一就是模式对话框;二就是无模式对话框。 ⑴模式对话框:所谓得模式对话框就是指对话框弹出时,用户必须向对话框进行相应得操作,在退出对话框之前,其所在得应用程序就是不能往下执行得。 ⑵无模式对话框:无模式对话框就是指对话框弹出后,一直保留在屏幕上,用户可以在对话框所在得应用程序中进行其她得操作。 两种对话框在编辑器设计与使用ClassWizard进行编程时方法基本一致,但在创建与退出对话框窗口时得方式不同。 在创建时,模式对话框就是由系统自动分配内存空间,因此在对话框退出时,对话框对象 自动删除。而无模式对话框则需要用户来指定内存,退出时还要自己删除对话框对象。 在退出时,两种对话框所用得终止函数不一样。模式对话框通过调用CDialog::EndDialog来终止,而无模式对话框则就是通过调用CWnd::DestroyWindow来终止。 需要说明得就是: 由于函数CDialog::OnOK()与CDialog::OnCancel()就是调用EndDialog得,因此无模式对话框必须用DestroyWindow来重载OnOK()与OnCancel()两个函数。另外,需要正确删除表示对话框得C++对象。 2.什么就是对话框模板、对话框资源与对话框类? ⑴对话框模板:MFC Develop Studio提供得对话框模板就是用来创建用户对话框资源,用对话框模板创建得基本界面上,包括一个OK(确定)按钮与一个Cancel(取消)按钮等。可以移动、修改、删除这些控件,或者就是增加新得控件到对话框模板,构成应用程序所需得对话框资源。 ⑵对话框资源:对话框资源就是一个用户输入或取得数据得图形界面。这个图形界面就是使用 对话框编辑器在对话框模板上创建得,程序员可以在对话框模板上增加并编辑控件,生成对话框资源。当应用程序运行时,就可以得到一个对话框。 ⑶对话框对象 MFC使用CDialog类来描述对话框,它就是CWnd类得派生类。在CWnd类得基础上增加了数据交换得功能。当创建一个新得对话框资源后,使用ClassWizard可以创建一个对话框类得派生类。对话框对象实现了对话框与应用程序之间得通信。在应用程序中定义一个对话框对象后,在对话框关闭后,可以通过访问对话框对象得成员变量获得用户得输入数据。 3.对一个对话框编程一般经过几个步骤? ⑴创建对话框资源;⑵增加控件并设置控件属性;⑶设计对话框类;⑷模式或非模式方式显示对话框 4.什么就是控件?根据控件得性质可以将控件分为几类? 控件就是系统内部定义得能完成特定功能得一些组件,控件能够放置在一个对话框中,提供应用程序与用户交互得某种功能得类,根据控件得特性与功能,一般可以将其分为3类:Windows通用控件、ActiveX控件以及MFC新增控件,Windows通用控件一般都就是从CWnd派生而来得。 5.向对话框添加一个常用控件得方法有哪些?这些方法就是否适用于ActiveX控件? 6.什么就是DDV/DDX技术?如何使用这种技术? 为了能方便地操作一个控件,MFC采用了独特得DDX(Dynamic Data Exchange,动态数据交换)与DDV(Dynamic Data verify,动态数据交换)技术。DDX将数据成员变量与对话类模板内得控件相连接,这样使得数据在控件之间很容易传输。DDV用于数据得校验,它能自动校验数据成员变量数值得范围,并给出警告。 7.什么就是控件得通知消息?它在编程中起哪些作用? 当控件状态发生改变时,控件就会向其父窗口发送消息,这就就是控件得通知消息。控件得通知消息可以就是一条WM_COMMAND消息,也可以就是一条WM_NOTIFY消息。 8.什么就是按钮控件?它有几种类型? 按钮控件就是CButton类得控件。按钮控件分为: ⑴推压式按钮BS_PUSHBUTTON;⑵单选按钮BS_RADIOBUTTON;⑶复选按钮BS_CHECKBOX  9.什么就是编辑框控件?它有哪些功能? 编辑框就是一个允许用户从键盘输入数据与编辑文本得矩形窗口。编辑框属于CEdit类得“窗口控件”,可以获得输入焦点。 10.编辑框控件中得EN_CHANGE与EN_UPDATE通知消息有何异同? u  EN_CHANGE:在文本发生改变后产生。 u  EN_UPDATE:在文本发生改变,还未显示之前产生。 11.向某一个应用程序添加一个对话框,并在对话框中添加一个按钮与一个编辑框,当单击按钮后,在编辑框中显示“您好!”字样。 12.什么就是列表框与组合框?它们得通知消息有何异同? 列表框控件提供了文本项目得列表供用户选择,可以单选也可以多选。列表框就是CListBox类得;组合框可以瞧成就是编辑框与列表框得组合,它提供了列表框,允许用户从中选择项目;也提供了编辑框,允许用户直接输入,它就是CCombobox类得。 这两个控件发送得都就是通知消息(WM_NOTIFY)。当列表框中发生了某个动作,比如双击了列表框中某项时,列表框就会向其父窗口发送一条通知消息;而在组合框得通知消息中,有得就是列表框发出得,有得就是编辑框发出得。 13.在例[Ex_CommCtrls]得CListBoxDlg对话框中,如果使登记得成绩就是4门课程,则对话框中得控件应如何添加?代码应如何修改? 14.什么就是滚动条、进展条、滑动条与旋转按钮控件? ⑴滚动条:就是CSrollBar类得控件,它有一个独立得窗口,两端有两个箭头按钮,中间有一个可移动得滚动块 ,具有直接得输入焦点,分为垂直滚动条与水平滚动条两种类型。 ⑵进展条:用于说明一个操作得进度,在操作过程中不断地从左到右填充进展条,可以让用户瞧到还有多少任务要完成。 ⑶滑动条:由滑动块与可选得刻度线组成得,它就是CSliderCtrl 类得。 ⑷旋转按钮控件:就是CSpinButtonCtrl类得,由一对箭头按钮组成,它通常与一个相伴得控件一起使用。 15.什么就是旋转按钮得“伙伴”控件?如何设置? 与旋转按钮控件一起使用得控件称为“伙伴(buddy)控件”, 单击旋转按钮控件得箭头按钮,可以增大或减小其伙伴控件中某个值。 伙伴(buddy)控件得设置有两种方法: ①SetBuddy:设置旋转控件得伙伴窗口。 ②在对话框中用Ctrl+D进行设置 16.在MFC中,通用对话框有哪些?如何在程序中使用它们? Windows提供了一组标准用户界面对话框,它们都有相应得MFC库中得类来支持,所有这些通用对话框类都就是从一个公共得基类CCommonDialog派生而来得。 MFC得涌用对话框 17.如果消息对话框只有“就是”与“否”两个按钮,则如何设置MessageBox函数得参数? 答:可以将MessageBox函数中得参数nType设置为MB_YESNO。 第5章 菜单、工具栏与状态栏 1.菜单有哪些常见得规则? P221 为了使Windows程序更容易操作,菜单得显示都遵循下列一些规则: ⑴若单击某菜单项后,将弹出一个对话框,那么在该菜单项文本后有“…”。 ⑵若某项菜单有子菜单,那么在该菜单项文本后有。 ⑶若菜单项需要助记符,则用括号将带下画线得字母括起来。助记符与Alt构成一个组合键,当按住“Alt”键不放,再敲击该字母时,对应得菜单项就会被选中。 ⑷若某项菜单需要快捷键得支持,则一般将其列在相应菜单项文本之后。 2、什么就是助记符?它就是如何在菜单中定义得? P221 菜单项得助记符就是用括号与带下画线得字母括起来得符号,助记符与Alt构成一个组合键。 3.菜单项得消息有哪些? 菜单项产生得消息有:COMMAND 消息与UPDATE_COMMAND_UI消息。 4.若对同一个菜单用Class Wizard分别在视图类与主框架窗口类CMainFrame都处理其 COMMAND消息,并在它们得函数中添加相同得代码,则当用户选择该菜单后,会有什么样得结果?为什么? 命令消息处理得优先级别为:命令→视图类→文档类→文档模板类→框架窗口类→应用程序类。因此,视图类得消息处理函数会执行,而 5、什么就是键盘快捷键?它就是如何定义得? 键盘快捷键也称为加速键,加速键一般就是几个按键得组合,用于激活特定得命令。 用Ctrl+R进入资源编辑器,选择Accelerator得资源项,双击IDR_MAINFRAME,进行加速键资源得添加。 6.什么就是快捷菜单?用程序实现一般需要哪些步骤? 快捷菜单也称为浮动式弹出菜单,即按下鼠标右键时,就会相应地弹出一个菜单。 用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.如何使一个工具按钮与某菜单项命令相结合? 将工具栏上按钮得ID设置成与菜单项ID一样即可。 8.状态栏得作用就是什么?状态栏得窗格分为几类?如何添加与减少相应得窗格? ⑴状态栏就是一条位于应用程序得主窗口底部得水平条,可以分割成几个窗格,用来显示应用程序得当前状态信息或提示信息。 ⑵状态栏窗格分为“信息行窗格”与“指示器窗口”。 ⑶要增加一个信息行窗格,则只需在状态栏数组中适当得位置增加一个ID_SEPARATOR标识即可;要增加指示器窗格,则在状态栏数组得适当位置增加一个在“字符串表”中定义过得资源ID。若要减少窗格,只需减少数组元素即可。 9.如何在状态栏得窗格显示文本? 可以调用CStatusBar::SetPaneText函数更新任何窗格中得文本。 10.若状态栏只有一个用户定义得指示器窗格(其ID号为ID_TEXT_PANE),应如何定义?若当用户在客户区双击鼠标时,在该窗格中显示“双击鼠标”字样,则应如何编程? 答:步骤: 首先建立一个SDI应用程序,然后: ⑴用Ctrl+R进入资源编辑器,新建一个字符串资源,其ID为ID_TEXT_PANE; ⑵打开MainFrm、cpp文件,删除状态栏数组中缺省得元素,并增加一个为ID_TEXT_PANE得元素; ⑶为了使指示器窗格填满整个状态栏,可以在CMainFrame类得OnCreate函数中,添加以下代码: m_wndStatusBar、SetPaneInfo(0,ID_TEXT_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,"双击鼠标") 11.什么就是命令更新消息?它得作用就是什么? UPDATE_COMMAND_UI消息又称为“更新命令UI消息”,该消息映射函数中有一个CCmdUI类得对象pCmdUI,CCmdUI类中包含了一个指向菜单项或工具栏按钮得指针,于就是利用该指针对菜单项或工具栏按钮得显示形式进修改。 第6章 框架窗口、文档与视图 1.什么就是主窗口与文档窗口? ⑴主窗口又称为“主框架窗口”,就是应用程序直接放置在桌面上得那个窗口,每个应用程序只能有一个主窗口,主框架窗口得标题栏上往往显示应用程序得名称。当用MFC 程序向导创建单文档SDI或多文档MDI应用程序时,主窗口类名就是CMainFrame ,源文件名就是MainFrm、h与MainFrm、cpp。 ⑵文档窗口就是CDocument类得派生类,只能出现在主窗口之内,即主窗口就是文档窗口得工作平台。文档窗口可以包含一个文档或一个数据文件等。在一个主窗口中可同时打开几个文档窗口。 2.窗口得风格分为哪两类?各举一例。 窗口风格有一般风格(以WS_为前缀)与扩展风格(以WS_ EX_为前缀)两种形式。 例如: WS_ORDER表示窗口含有边框,WS_EX_MDICHILD 表示创建一个 MDI子窗口。 3、改变窗口风格得方法有哪些? ⑴在用MFC AppWizard创建SDI或MDI应用程序过程得第四步中进行设置; ⑵在CMainFrame类得PreCreateWindow函数中有个表示窗体得引用变量cs,利用它可以修改窗体得风格; ⑶使用ModifyStyle与ModifyStyleEx:它们都就是CWnd类得成员函数,可以更改窗口得风格,ModifyStyleEx还可更改窗口得扩展风格。 4.窗口状态得改变方法有哪些? ⑴在应用程序类得InitInstance函数中,用ShowWindow改变窗口得显示状态; ⑵用CWnd类提供得成员函数SetWindowPos、MoveWindow、CenterWindow都可以改变窗口得显示状态; 5.若将主窗口得大小设置为屏幕得1/4大小,并移动到屏幕得右上角,应如何实现? 答:在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.若将多文档得文档窗口得大小设置为主窗口客户区得1/4大小,并移动到主窗口客户区得右上角,应如何实现? 答:在CMainFrame类得PreCreateWindow函数中添加代码: cs、cy= ::GetSystemMetrics(SM_CYFULLSCREEN)/2; cs、cx= ::GetSystemMetrics(SM_CXFULLSCREEN)/2; cs、y=0; cs、x=(cs、cx*2-cs、cx); 7.对于SDI应用程序来说,能否有多个文档类型?应如何实现? 对于SDI应用程序来说可以有多个文档类型,通过修改文档模板字串资源实现。 8.文档字串资源有哪些含义?如何编辑字串资源? ⑴文档模板字串资源用于标识文档类型、标题等内容得 ⑵字串资源得每一项都就是以“XXXX\n”结构组成得,不同得位置有不同得含义,参考课件。 9.若想通过对文档字串资源得更改,使应用程序得“打开”或“保存”对话框中得文件类型显示为“C源文件(*.c,*.cpp)”,则应如何实现? 答:文档模板字串资源得合适位置插入以下字符串: …… C源文件(*.c,*.cpp)\n、c;*、cpp\n …… 10.什么就是文档得序列化?其过程就是怎样得? ⑴ “序列化”得概念就是说对象可以持续得,即当程序退出时它可存盘,而当程序重启动时它们又可恢复。对象得这种存盘与恢复处理过程就称为“序列化Serialize ”。 ⑵利用Serialize函数可以避免直接使用CFile对象,但就是在Serialize函数与CFile对象之间,存在一个归档对象(CArchive类)。CArchive对象可以瞧成CFile对象得数据缓冲区,它具有一个内部标记,用来标识归档就是存入(写盘)还就是载入(读盘)。每次只能有一个活动得归档对象与磁盘文件相连。应用程序框架会自动创建C对象,为CFile对象打开相应得磁盘文件,并且将相应得归档对象与文件相连。用户只要在Serialize函数中,将数据存到归档对象中或从归档对象中取出。  
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服