MFC程序设计期末考试试题(含详细答案)_第1页
MFC程序设计期末考试试题(含详细答案)_第2页
MFC程序设计期末考试试题(含详细答案)_第3页
MFC程序设计期末考试试题(含详细答案)_第4页
MFC程序设计期末考试试题(含详细答案)_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

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

文档简介

MFC程序设计期末考试试题(含详细答案)考试说明:满分100分,考试时间90分钟,题型包含选择题、填空题、简答题、编程题,侧重MFC基础框架、消息机制、常用类及窗口操作实操知识点。一、单项选择题(共15题,每题2分,共30分)1、MFC的核心基类是()A、CObjectB、CWndC、CWinAppD、CDocument2、每个MFC应用程序有且仅有一个的类是()A、CViewB、CWinAppC、CDialogD、CWnd3、MFC中消息映射宏的核心作用是()A、定义窗口样式B、绑定消息与处理函数C、分配内存空间D、初始化程序资源4、窗口初始化完成、首次显示前触发的消息是()5、对话框程序初始化时,专门用于初始化控件、数据的消息是()A、WM_COMMANDB、WM_INITDIALOGC、WM_SIZED、WM_CLOSE6、MFC中用于绘制图形、文字的核心类是()A、CFileB、CDCC、CStringD、CRect7、下列不属于MFC文档视图结构核心类的是()A、CDocumentB、CViewC、CFrameWndD、CButton8、按钮点击事件对应的消息是()A、WM_CLICKB、WM_COMMANDC、WM_LBUTTONDOWND、WM_KEYDOWN9、CString类中用于获取字符串长度的成员函数是()A、GetSize()B、GetLength()C、Count()D、Len()10、窗口重绘、刷新画面时系统自动发送的消息是()11、MFC模态对话框的弹出函数是()A、ShowWindow()B、DoModal()C、Create()D、Open()12、下列函数中,属于视图类重绘核心函数的是()A、OnDraw()B、OnInit()C、OnCreate()D、OnSize()13、获取当前窗口客户区矩形的函数是()A、GetWindowRect()B、GetClientRect()C、GetRect()D、GetWndRect()14、MFC中用于文件读写操作的基础类是()A、CFileB、CFileDialogC、CStreamD、CDataFile15、非模态对话框与模态对话框最核心的区别是()A、界面样式不同B、是否阻塞父窗口操作C、资源占用不同D、创建方式不同二、填空题(共10空,每空2分,共20分)1、MFC程序的执行入口函数是________。2、消息映射表中,________宏用于声明消息处理函数,________宏用于实现消息绑定。3、CDC类中,________函数用于在指定坐标输出文字。4、文档视图结构中,________负责存储数据,________负责展示数据。5、关闭窗口时触发的核心消息是________。6、MFC对话框分为模态对话框和________对话框两种类型。7、刷新窗口、触发重绘消息的函数是________。三、简答题(共4题,每题5分,共20分)1、简述MFC中模态对话框和非模态对话框的主要区别。3、简述MFC文档、视图、框架窗口三者的分工与联系。4、简述MFC消息传递的基本流程。四、编程应用题(共2题,每题15分,共30分)1、在MFC对话框程序中,完成功能:点击按钮,在窗口客户区输出一行文字“MFC程序设计测试”。写出核心代码及操作步骤。2、编写MFC代码,实现通过CFile类创建一个文本文件test.txt,并写入字符串“HelloMFC”。参考答案及详细解析一、单项选择题答案及解析1、A解析:CObject是MFC所有类的顶层基类,其余类均间接或直接继承自该类;CWnd是窗口基类,CWinApp是应用程序类,CDocument是文档类。2、B解析:CWinApp为应用程序主类,一个MFC工程只能实例化一个该类对象,负责程序启动、消息循环、资源加载等核心工作。3、B解析:消息映射宏是MFC消息机制的核心,作用是将系统消息、控件消息与自定义的消息处理函数绑定,实现消息响应。5、B解析:WM_INITDIALOG是对话框专属初始化消息,对话框创建时触发,常用于初始化控件默认值、绑定数据。6、B解析:CDC是设备上下文类,封装了窗口绘图、文字绘制、图形绘制的所有接口,是MFC绘图的核心类。7、D解析:文档视图结构核心三类为CDocument(文档)、CView(视图)、CFrameWnd(框架窗口),CButton是按钮控件类,不属于该结构。8、B解析:按钮、菜单、工具栏等控件的操作事件,均封装为WM_COMMAND消息统一处理。9、B解析:CString类获取字符串长度的标准成员函数为GetLength(),GetSize()多用于容器类。11、B解析:DoModal()是模态对话框的弹出函数,会阻塞父窗口;ShowWindow()用于普通窗口和非模态对话框显示。12、A解析:视图类的OnDraw()是核心绘图函数,窗口重绘时自动调用,完成视图内容绘制。13、B解析:GetClientRect()获取窗口客户区坐标(相对窗口左上角),GetWindowRect()获取窗口在屏幕中的坐标。14、A解析:CFile是MFC基础文件操作类,提供文件创建、读写、关闭等基础接口;CFileDialog是文件选择对话框类。15、B解析:二者最核心区别为模态对话框阻塞父窗口操作,必须关闭对话框后才能操作主窗口;非模态对话框不阻塞,可同时操作主窗口。二、填空题答案及解析1、InitInstance()解析:MFC程序屏蔽了传统main函数,以CWinApp类的InitInstance()作为程序启动入口,完成窗口创建、初始化工作。2、afx_msg、BEGIN_MESSAGE_MAP/END_MESSAGE_MAP解析:afx_msg用于头文件中声明消息处理函数,消息映射宏组用于源文件中绑定消息与处理函数。3、TextOut()解析:CDC类的TextOut(intx,inty,LPCTSTRstr)函数,可在指定坐标位置输出文本内容。4、CDocument、CView解析:文档类负责数据存储、读取、保存,视图类负责将文档数据展示到窗口,实现数据与界面分离。5、WM_CLOSE解析:点击窗口关闭按钮时触发该消息,可重写消息函数实现关闭前的数据保存、弹窗提示等功能。6、非模态解析:MFC对话框分为模态、非模态两类,适配不同交互场景。三、简答题详细答案1、模态对话框和非模态对话框的主要区别(1)交互特性:模态对话框弹出后会阻塞父窗口及程序其他窗口的所有操作,必须关闭对话框后才能继续操作程序;非模态对话框弹出后,不影响主窗口操作,可同时操作主窗口和对话框。(2)创建方式:模态对话框通过DoModal()函数弹出,由系统自动管理资源释放;非模态对话框通过Create()创建、ShowWindow()显示,需要手动管理内存和窗口销毁。(3)应用场景:模态对话框多用于弹窗提示、参数设置、确认操作等必须完成的交互;非模态对话框多用于悬浮工具栏、查询窗口等可并行操作的界面。处理机制:程序收到该消息后,自动调用窗口的重绘函数,对话框调用OnPaint(),视图窗口调用OnDraw()。函数内通过CDC设备上下文获取绘图权限,完成文字、图形、界面元素的重新绘制,刷新窗口内容。3、MFC文档、视图、框架窗口三者的分工与联系分工:CDocument文档类专门负责数据层管理,承担数据存储、读取、修改、文件保存加载工作,不参与界面展示;CView视图类负责界面层展示,读取文档数据并绘制到窗口,同时接收用户界面操作;CFrameWnd框架窗口是载体,负责管理窗口菜单栏、工具栏、状态栏,承载视图和文档。联系:三者相互关联、数据互通,一个文档可对应多个视图,实现多窗口展示同一组数据;用户在视图操作修改数据后,可同步更新到文档,文档更新后可通知所有视图刷新界面,实现数据与界面分离解耦。4、MFC消息传递的基本流程第一步:系统或用户操作产生消息,如鼠标点击、窗口重绘、按键输入等,消息被存入程序消息队列;第二步:CWinApp应用程序类的消息循环不断从队列中读取消息;第三步:通过消息映射机制匹配对应的窗口类和消息处理函数;第四步:执行对应的消息处理函数,完成事件响应;若无匹配函数,执行系统默认处理。四、编程应用题详细答案1、按钮点击输出文字功能实现操作步骤:(1)新建MFC基于对话框的工程,在对话框资源中添加一个按钮控件,修改按钮ID为IDC_BTN_SHOW、按钮文本为“显示文字”;(2)双击按钮,自动生成按钮点击消息处理函数OnBnClickedBtnShow();(3)在消息函数中编写绘图代码,实现文字输出。核心代码:cpp

voidCMfcTestDlg::OnBnClickedBtnShow()

{

//获取当前窗口设备上下文

CDC*pDC=GetDC();

//在坐标(50,50)位置输出指定文字

pDC->TextOut(50,50,_T("MFC程序设计测试"));

//释放设备上下文,避免资源泄漏

ReleaseDC(pDC);

}代码说明:GetDC()获取窗口绘图设备上下文,TextOut完成文字绘制,ReleaseDC()必须手动释放设备资源,防止内存泄漏。2、CFile类创建并写入文本文件核心代码:cpp

voidCMfcTestDlg::OnBnClickedBtnWriteFile()

{

//定义文件对象

CFilefile;

//定义写入字符串

CStringstrData=_T("HelloMFC");

//打开/创建文件:不存在则创建,存在则覆盖,写入模式

if(file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeWrite))

{

//将CString转换为字符数组,写入文件

file.Write(strData,strData.GetLength()*sizeof(TCHAR))

温馨提示

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

评论

0/150

提交评论