




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
P21:第1章作业参考答案1-5.什么是MSDN?在VisualC++中有哪几种方法可以启动MSDN?答:MSDN是MicrosoftDeveloperNetwork的简称,即微软开发者帮助网络。MSDN帮助系统是一个HTML格式的帮助文件,它所包含的内容非常丰富,包含了有关Windows的编程原理、方法和应用实例等内容。在VisualC++中有三种方法可以启动MSDN:1)执行Help|Contents命令;2) Search工具栏按钮;3) 单击F1键快速获取相关内容的帮助:如在源文件编辑器中用光标把一个需要查询的单词全选上,或单击一条出错提示信息,按F1键出现MSDN的“索引”页面。1-6.VisualC++中项目的含义是什么?一个项目由哪些文件组成?在VisualC++IDE中,把实现程序设计功能的一组相互关联的C++源文件、资源文件以及支撑这些文件的类的集合称为一个项目。项目用项目文件DSP(DeveloperStudioProject)来描述,文件名后缀为.dsp。一个项目至少包含一个项目文件。另外还包含的源文件、资源文件和其它文件。1-10.Windows资源主要包括哪些?VisualC++IDE提供了哪些资源编辑器?Windows资源主要包括对话框、菜单、工具条、位图、图标、字符串、快捷键等。VisualC++IDE提供了对话框编辑器、菜单编辑器、工具条编辑器、图像编辑器、快捷键编辑器、字符串表编辑器、版本信息编辑器等。1-16.BuildMiniBar工具栏主要完成什么功能?它与Build工具栏有何不同?BuildMiniBar工具栏中主要包括了项目的、编译、链接运行和调试运行等操作命令。它比Build工具栏少了项目名列表框和版本类别列表框。第4章作业P167:4-1.VisualC++IDE提供了哪些类型的程序向导?最常用的向导有哪几个?VisualC++IDE提供了下列主要向导类型:DatebaseProject:创建数据库项目MFCActiveXControlWizard:创建基于MFC的ActiveX控件MFCAppWizard[dll]:创建基于MFC的动态链接库MFCAppWizard[exe]:创建基于MFC的应用程序(最常用)NewDatabaseWizard:在SQL服务器上创建一个SQLServer数据库Win32Application:创建Win32应用程序,可不使用MFC,采用SDK方法编程Win32ConsoleApplication:创建DOS下的Win32控制台应用程序,采用C++或C语言进行编程Win32Dynamic-linkLibrary:创建Win32动态链接库,采用SDK方法Win32StaticLibrary:创建Win32静态链接库,采用SDK方法最常用的向导有:MFCAppWizard应用程序向导;Win32ConsoleApplication基于控制台的应用程序向导。4-2.MFCAppWizard应用程序向导能创建哪几种类型的应用程序?利用应用程序向导建立一个SDI应用程序有哪几个步骤?简要说明每一个操作步骤对话框中各选项的含义。MFCAppWizard应用程序向导能创建下列三种类型的应用程序:Singledocument:单文档界面应用程序;Multipledocuments:多文档界面应用程序;Dialogbased:基于对话框的应用程序;利用应用程序向导建立一个SDI应用程序有下列6个步骤:1)选择创建的应用程序类型;2)选择应用程序所支持的数据库方式;3)选择应用程序所支持的复合文档类型;4)设置应用程序界面特征;5)设置项目的风格和链接方式,选择是否产生注释;6)列出了向导将创建的类,用户可以修改一些类默认的类名和对应的头文件名、实现文件名。对某些类还可以选择不同的基类。4-5.利用VisualC++编写Windows应用程序可以采取哪几种方法?编写一个MFC应用程序一般有哪几个步骤?简述向项目添加一个资源的方法。利用VisualC++编写Windows应用程序可以采取下列三种不同方法:1) 利用Win32应用程序接口API(ApplicationProgrammingInterface)提供的函数,用C或C++语言编写程序。采用结构化程序设计或者面向对象程序设计方式。2) 由于MFC通过类对API的绝大部分功能进行了封装,可以利用MFC,用C++语言编写程序。采用面向对象程序设计方式。3) 利用MFC和MFCAppWizard[exe],首先利用MFCAppWizard[exe]应用程序向导生成基本的应用程序框架,然后按照MFC机制和原理向框架添加具体的应用代码。编写一个实现具体功能的MFC应用程序的步骤如下:1) 根据应用程序特性在MFCAppWizard[exe]应用程序向导各步骤对话框中进行选择,创建一个应用程序的框架。2) 利用资源编辑器为程序编辑或添加资源,如编辑菜单、添加对话框等。3) 利用ClassWizard类向导或手工添加类、成员变量和成员函数的声明。4) 根据需要编写具体的函数代码。5) 编译、链接程序。如果程序有语法错误,需要修改源程序。直到没有编译、链接错误,才能得到可执行程序。6) 测试应用程序各项功能,如果程序没有实现程序设计所要求的功能,启动Debug调试器进行调试,找出并修改程序设计中的逻辑错误。向项目添加一个资源的方法是:利用Insert菜单创建一个新的资源。可以使用下拉式主菜单,也可以使用弹出式菜单。打开Insert菜单,选择Resource菜单项,出现InsertResource对话框,在ResourceType框中选择一个资源类型,单击New按钮即可向项目添加一个资源6.MFC应用程序框架的实质是什么?它与MFC应用程序向导有何区别?MFC应用程序框架的实质是同一类型应用程序的通用源代码。因为同一类型应用程序的结构大致相同,并有很多相同的源代码,即通用源代码。MFC应用程序向导实质上是一个源代码生成器。利用应用程序向导可以快速创建各种风格的应用程序框架,自动生成程序通用的源代码。这样大大减轻了手工编写代码的工作量。8.MFCAppWizard[exe]向导为SDI应用程序创建了哪几个类?它们的基类分别是哪几个?这些类分别完成什么程序功能?MFCAppWizard[exe]向导为一般的SDI应用程序生成了四个类:框架窗口类、文档类、视图类、应用程序类,这些类都是MFC类的派生类。其中框架窗口类的基类是MFC的CFrameWnd,它主要负责创建标题栏、菜单栏、工具栏和状态栏;文档类的基类是MFC的CDocument类,它主要负责应用程序数据的保存和装载,实现文档的序列化功能;视图类的基类是MFC的CView类,它主要负责客户区文档数据的显示,以及如何进行人机交互;应用程序类的基类是MFC的CWinApp类,它主要负责完成应用程序的初始化、程序的启动和程序运行结束时的清理工作。P208:第5章作业参考答案1.什么是文档?什么是视图?请说明文档/视图结构应用程序的界面风格。文档的概念在MFC应用程序中的适用范围很广,一般说来,文档是能够被逻辑地组合的一系列数据,包括文本、图形、图象和表格数据。一个文档代表了用户存储或打开的一个文件单位。文档的主要作用是把对数据的处理从对用户界面的处理中分离出来,集中处理数据,同时提供了一个与其它类交互的接口。视图是文档在屏幕上的一个映像,它就像一个观景器,用户通过视图看到文档,也是通过视图来改变文档,视图充当了文档与用户之间的媒介物。应用程序通过视图向用户显示文档中的数据,并把用户的输入解释为对文档的操作。一个视图总是与一个文档对象相关联,用户通过与文档相关联的视图与文档进行交互。当用户打开一个文档时,应用程序就会创建一个与之相关联的视图。文档/视图结构应用程序的界面风格就是在一个主窗口边框中有标题栏、主菜单、工具栏和状态栏,在窗口的中央客户区显示视图。不同程序的相同菜单项和工具栏按钮表示相同的操作。2.MFC应用程序中的文档和视图分别完成什么程序功能?它们之间有什么关系?简述文档/视图结构的概念及其主要特点。视图负责显示和编辑文档数据,但不负责存储。用户对数据的编辑需要依靠窗口上的鼠标与键盘操作才得以完成,这些消息都是由视图类接收后进行处理或通知文档类,如收到窗口刷新消息时调用视图类的成员函数OnDraw()显示文档内容。文档负责数据的读写操作,数据通常被保存在文档类的成员变量中,文档类通过一个称为序列化的成员函数将成员变量的数据保存到磁盘文件中。MFC应用程序为数据的序列化提供了默认支持。视图是文档在屏幕上的一个映像,它就像一个观景器,用户通过视图看到文档,也是通过视图来改变文档,视图充当了文档与用户之间的媒介物。文档/视图结构的基本思想是将数据的管理和显示分开。这样做可以使软件组件的分工更加明确,形成更好的模块化软件。利用AppWizard生成单文档和多文档程序框架时,它所创建的应用程序类、框架窗口类、文档模板类、视图类、文档类等构成一个相互关联的结构,我们称此结构为文档/视图结构。在MFC文档/视图结构中,文档用于管理和维护数据;视图用来显示和编辑数据。5-3.文档、视图和应用程序框架之间如何相互作用?通过哪几个主要成员函数完成文档和视图之间的相互交互?在文档、视图和应用程序框架之间包含了一系列复杂的相互作用过程,文档与视图的交互是通过类的公有成员变量和成员函数实现的。一个视图对象只有一个与之相关联的文档对象。在MFC应用程序中,视图对象通过调用成员函数函数GetDocument()得到当前文档对象的指针,利用这个指针可以访问文档类及其派生类的公有成员。一个文档对象可以有多个与之相关联的视图对象,当一个文档的数据发生改变时,更新与该文档有关的所有视图的方法是调用成员函数CDocument::UpdateAllViews()。5-5.简述单文档界面SDI和多文档界面MDI的概念,并比较二者的异同。MFC基于文档/视图结构的应用程序分为单文档界面SDI和多文档界面MDI两种类型。一个多文档应用程序有一个主窗口,在主窗口中可以同时打开多个子窗口,每一个子窗口对应一个不同的文档。而在SDI中没有子窗口。SDI和MDI使用不同框架窗口。SDI的框架窗口是唯一的主框架窗口,窗口类是CMainFrame,由CFrameWnd派生而来。MDI的框架窗口分为主框架窗口和子框架窗口,区别于SDI,MDI的主框架窗口不包含视图,分别由每个子框架窗口包含一个视图。MDI的主框架窗口类不与某个打开的文档相关联,而只与子框架窗口相关联。MDI主框架窗口类CMainFrame由CMDIFrameWnd派生而来,而MDI子框架窗口类CChildFrame由CMDIChildWnd派生而来。8.菜单的属性有哪些?如何建立菜单?简述添加菜单命令处理函数的方法。答:菜单的属性有:菜单ID,菜单标题和菜单命令提示信息等。利用AppWizard生成单文档和多文档程序框架时,会生成一个主菜单。可以使用菜单编辑器在主菜单上添加菜单项,确定菜单项的ID,标题和提示信息等。然后利用ClassWizard添加该菜单命令项的命令处理函数:在ClassWizard界面选择MessageMap标签,选择目标菜单的ID号,在Message列表框中选择Command,最后点击AddFunction按钮即可。P252:第6章作业1.对话框和控件的功能是什么?控件和对话框有何相同之处?对话框是Windows应用程序中一种常用的资源,其主要功能是输出信息和接收用户的输入数据。控件是嵌入在对话框中或其它父窗口中的一个特殊的小窗口,它用于完成不同的输入、输出功能。控件和对话框都是窗口。对话框与控件关系密切,在每个对话框上一般都有一些控件,对话框依靠这些控件与用户进行信息的交互。对话框相当于控件的容器。6-2•何谓基于对话框的应用程序?简述如何利用MFCAppWizard应用程序向导创建一个基于对话框的应用程序。答:应用程序的主窗口是对话框的程序就是基于对话框的应用程序。例如Windows中的计算器程序。利用MFCAppWizard应用程序向导创建一个基于对话框的应用程序的方法和步骤如下:在执行AppWizard的第一步,选择应用程序的类型为基于基于对话框的应用程序。在第2步可以根据实际需要选择界面特征和ActiveX和WOSA支持。选择是否产生备注和MFC库的链接方式。在第4步可以看到AppWizard将生成一个应用程序类和一个对话框类。可以修改源文件名。6-4.何谓DDX?何谓DDV?编程时如何使用MFC提供的DDX功能?DDX就是对话框数据交换:DialogDataExchange。DDV就是对话框数据验证:DialogDataValidation。编程时通过ClassWizard类向导将对话框控件与某个类的成员变量相关联,当调用UpdateData(TRUE)时,MFC通过调用DDX函数将数据从控件传递到关联的成员变量;当调用UpdateData(FALSE)时,MFC通过调用DDX函数将数据从成员变量传递到关联的的控件。利用UpdateData()函数实现了在刷新后重新获取成员变量。DDX就如同一条双向通道,而方向控制开关就是UpdateData()函数中的BOOL类型参数:TRUE还是FALSE。6.DoModal()函数的主要功能是什么?请画出对话框的简要工作流程图。CDialog::DoModal()激活模态对话框,显示对话框窗口。对话框的简要工作流程如下:当定义了一个对话框类后,就可以利用这个对话框类创建一个对话框对象。然后可以调用对话框类的成员函数DoModal()建立对话框窗口并在屏幕上显示对话框。例如,假设定义了一个名为CMyDialog的对话框类,为了在屏幕上显示一个对话框,可以编写如下代码:CMyDialogmyDlg;myDlg.DoModal();函数OnOK()、OnCancel()与DoModal()的关系:对话框中一般都有OK和Cancel按钮,单击OK按钮时调用CDialog::OnOK()函数,单击Cancel按钮时调用CDialog::OnCancel()函数。OnOK()函数和OnCancal()函数都将结束DoModal()函数调用,但令DoModal()返回不同的值。OnOK()函数令DoModal()返回IDOK,OnCancel()函数令DoModal()返回IDCANCAL。用户可以根据DoModal()的返回值做出不同的选择。如:if(myDlg.DoModal()==IDOK){……}P293:第7章作业3.什么是WindowsAPI?它主要包含在哪三个动态链接库中?使用它们需要包含哪一个头文件?请列举定义在这三个库中的一些API函数。答:WindowsAPI(ApplicationProgrammingInterface)是Windows操作系统与应用程序之间的标准接口,它提供了几千个标准函数、宏和数据结构的定义。WindowsAPI函数目标代码包含在一些DLL动态链接库中,其中最主要的DLL是User32.dll、Gdi32.dll和Kernel32.dll三个库文件。使用它们需要头文件windows.h。下面列出这三个库中的一些API函数:PostMessage将一条消息投递到指定窗口的消息队列CreateFile打开和创建文件、管道、邮槽、通信服务、设备以及控制台AppendMenu在指定的菜单里添加一个菜单项7-4.何谓SDK?采用SDK编程与采用MFC编程有什么实质区别?答:SDK是应用软件开发工具包(SoftwareDevelopmentKit)。采用SDK编程时,程序员通过调用相应的WindowsAPI函数,逐步实现程序各部分的功能。采用SDK编写应用程序是一种结构化的程序设计方法。采用MFC编程时,程序员可以利用AppWizard创建一个应用程序的框架,然后使用MFC类库来实现程序功能。采用MFC编程是一种面向对象程序设计。8.请解释下列术语:(1)事件;(2)消息;(3)消息队列;(4)事件驱动答:(1)事件是用户对Windows的某种操作或者外部变化,例如用户点击鼠标左键,按下键盘某个键,打印机缺纸等。消息就是用于精确描述Windows中某个事件发生的信息。消息队列是在消息的传输过程中保存消息的容器。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者处于忙时不能接受消息,消息队列会保留消息,直到可以成功地传递它。事件驱动是一种全新的程序设计方法。事件驱动程序的执行流程不是由程序的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序。这样就允许用户用各种合理的顺序来安排程序的执行流程。7-9.Windows消息分为哪几类?它们之间有何异同?请举例说明。答:Windows中常用的消息有:窗口管理消息、初始化消息、输入消息、系统消息、剪切板消息、控件处理消息、控件通知消息、滚动条通知消息、非用户区消息、MDI(多文档见面)消息、DDE(动态数据交换)消息,以及应用程序自定义的消息等。不同的消息其来源不同。P294:7-11.什么是句柄?如何获取一个MFC类的对象的句柄?句柄是WINDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,菜单,位图,GDI对象等。获取MFC类对象的句柄的两种方法:1) 通过访问类的public属性成员变量,如类CWnd的成员变量m_hWnd就是一个窗口对象的句柄。2) 先定义一个句柄,然后调用MFC类的成员函数Attach。将句柄与一个MFC类对象联系在一起,此时的句柄就成为该MFC类对象的句柄。7-12.MFC分为哪几个部分?利用MFC编程有哪些优点?请叙述在学习MFC时重点要解决哪些问题。答:MFC主要组成部分:类、宏和全局函数。采用MFC编程的优点如下:使用标准化的程序代码结构,有利于程序员之间的交流。VisualC++为MFC提供了大量的工具支持,提高了编程效率。如利用MFCAppWizard创建MFC应用程序框架,利用ClassWizard方便地对Windows消息进行管理。MFC应用程序的效率较高,只比传统的WindowsC程序低5%左右。并且,在MFC应用程序中还允许混合使用传统的WindowsAPI函数。其它优势:完全支持Windows所有的函数、控件、消息、菜单及对话框;具有良好的稳定性和可移植性,更符合微软的风格等。在学习MFC时重点要解决下列问题:首先要对Windows编程概念和API函数有一定的了解,如WindowsAPI有哪些功能和哪些常用的数据结构等。学会抽象地把握问题,不求甚解,不要一开始学习VisualC++就试图了解整个MFC类库。从理解和使用两个方面学习MFC,理解MFC应用程序的框架结构。先大体上了解MFC的概念、组成和基本约定,从简单的类入手,结合程序设计,由浅入深,循序渐进、日积月累。编程时如果MFC某个类能完成所需要的功能,可以直接调用已有类的方法(成员函数)。否则,可以利用面向对象技术中的“继承”方法对MFC类的行为进行扩充和修改,从MFC中已有的类派生出自己需要的类。7-13.何谓MFC应用程序框架?它提供了哪些运行时类的对象?请画图表示这些对象之间的相互关系。答:MFC应用程序框架是同一类型应用程序的通用结构和通用源代码。SDI应用程序框架提供了下列这些运行时类的对象:应用程序对象,文档模板对象,文档对象,框架窗口对象,视图对象。这些对象之间的相互关系如下图所示:7-14.传统的Windows应用程序和MFC应用程序的入口函数分别是哪一个?答:传统的Windows应用程序的入口函数是WinMain()函数。MFC应用程序启动时,首先创建一个(且只有一个)应用程序对象(Applicationobject对象)theApp,这时将自动调用应用程序类的构造函数初始化对象theApp,然后由应用程序框架调用MFC提供的AfxWinMain(庄函数。AfxWinMain()主函数首先通过调用全局函数AfxGetApp()获取应用程序对象theApp的指针pApp,然后通过pApp调用应用程序对象的成员函数InitApplication()、InitInstance(),完成程序的初始化和启动工作,最后调用成员函数Run(),进入消息循环。AfxWinMain在MFC的源代码文件WINMAIN.CPP中。简化后的AfxWinMain代码如下:intAFXAPIAfxWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow){intnReturnCode=-1;CWinApp*pApp=AfxGetApp();AfxWinInit(hInstance,hPrevInstance,lpCmdLine,nCmdShow);pApp->InitApplication();pApp->InitInstance()nReturnCode=pApp->Run();AfxWinTerm();returnnReturnCode;}7-18.MFC应用程序与MFC库链接有哪几种方式?如何设置这些链接方式?编译程序如何识别它们?答:MFC应用程序与MFC库链接有动态链接和静态链接两种方式。可以在AppWizard向导中设置MFC的链接方式;还可以通过菜单命令ProjectlSettingIGeneral进行设置。编译程序利用条件编译指令识别链接方式。7-19.简述MFC的消息映射机制。MFC消息映射宏有哪几种形式?请举例说明利用ClassWizard类向导添加消息处理函数时,它具体做了哪些工作?MFC采用消息映射(MessageMap)机制取代C/C++语言中的switch-case结构来处理消息。MFC消息映射机制包括一组消息映射宏。一条消息映射宏把一个Windows消息和其消息处理函数联结起来。MFC应用程序框架提供了消息映射功能。在类的实现源文件中用BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()宏来定义消息映射。在类定义的结尾用DECLARE_MESSAGE_MAP()宏来声明使用消息映射。例如:利用ClassWizard为框架类添加消息WM_CLOSE、WM_DESTROY及菜单项“EditICopy”的消息处理函数,ClassWizard具体做了下面工作:ClassWizard将在类的实现文件中添加三个消息映射宏和三个消息处理函数。消息映射宏如下:BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)//{{AFX_MSG_MAP(CMainFrame)ON_WM_CREATE()//由MFCAppWizard程序向导自动生成的消息映射ON_WM_CLOSE()//由ClassWizard类向导添加ON_WM_DESTROY()ON_COMMAND(ID_EDIT_COPYOnEditCopy)//}}AFX_MSG_MAPEND_MESSAGE_MAP()另外,ClassWizard还在类的定义中声明了消息处理函数classCMainFrame:CFrameWnd{public:CMainFrame();protected://{{AFX_MSG(CMainFrame)//声明消息处理函数原形afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);//由程序向导自动生成afx_msgvoidOnClose();//由ClassWizard类向导添加afx_msgvoidOnDestroy();afx_msgvoidOnEditCopy();//}}AFX_MSGDECLARE_MESSAGE_MAP()//声明使用消息映射宏};MFC消息映射宏有下面几种形式:序号消息映射宏用途1ONCOMMAND把commandmessage映射到相应的函数2ON_CONTROL把controlnotificationmessage映射至U相应的函数。MFC根据不同的控制消息,在此基础上定义了更具体的宏,这样用户在使用时就不需要指定通知代码ID,如ONBNCLICKED。3ONMESSAGE把user-definedmessage.映射到相应的函数4ON_REGISTERED_MESSAGE把registereduser-definedmessage映射至U相应的函数,实际上nMessage等于OxOCOOO,nSig等于宏的消息参数。nSig的真实值为Afxsig」wl。5ON_UPDATE_COMMAND_UI把userinterfaceuserupdatecommandmessage映射到相应的函数上。6ON_COMMAND_RANGE把一定范围内的commandIDs映射到相应的函数上7ON_UPDATE_COMMAND_UI_RANGE把一定范围内的userinterfaceuserupdatecommandmessage映射到相应的函数上8ON_CONTROL_RANGE把一定范围内的controlnotificationmessage映射到相应的函数上20.Windows消息的发送有哪两种方式?它们之间的主要区别是什么?WindowsAPI提供了哪几个函数用于消息的发送?MFC如何封装消息发送函数?发送消息到一个窗口可以采用传送(Send)或寄送(Post)方式,这两种方式之间的主要区别是消息被接收对象收到后是否立即被处理。Windows提供了三个API函数用于消息的发送。函数SendMessage()用于向一个或多个窗口传送消息,该函数将调用目标窗口的窗口函数,直到目标窗口处理完收到的消息,该函数才返回。函数PostMessage()用于向一个或多个窗口寄送消息,它把消息放在指定窗口创建的线程的消息队列中,然后不等消息处理完就返回。函数SendDlgItemMessage()函数用于向对话框中指定的控件发送消息,直到目标控件处理完收到的消息,该函数才返回。MFC将这三个函数封装为CWnd窗口类的成员函数,封装了目标窗口句柄,它们将向调用它的窗口对象发送或寄送消息,如pMyView->SendMessage()的调用形式表示向pMyView所指对象发送消息。第8章作业P332:1.名词解释:(1)GDI;(2)设备环境;(3)设备无关性;(4)映射模式GDI是Windows的图形设备接口(GraphicsDeviceInterface))GDI作为Windows的重要组成部分,它负责管理用户绘图操作时功能的转换。设备环境也称设备描述表或设备上下文,它是由Windows管理的一个数据结构,它保存了绘图操作中一些共同需要设置的信息,如当前的画笔、画刷、字体和位图等图形对象及其属性,以及颜色和背景等影响图形输出的绘图模式。设备无关性是指操作系统屏蔽了硬件设备的差异,使应用程序员编程时一般无需考虑设备的类型,如不同种类的显示器或打印机。映射模式是指逻辑坐标和设备坐标的转换模式。映射模式确定了在绘制图形时所依据的坐标系,它定义了逻辑单位的实际大小、坐标增长方向,所有映射模式的坐标原点均在设备输出区域(如客户区或打印区)的左上角。2.设备环境保存了哪些信息?有什么作用?如何获取设备环境?设备环境也称设备描述表或设备上下文,它是由Windows管理的一个数据结构,它保存了绘图操作中一些共同需要设置的信息,如当前的画笔、画刷、字体和位图等图形对象及其属性,以及颜色和背景等影响图形输出的绘图模式。应用程序利用设备环境中的信息定义图形对象及其属性,并实现应用程序、设备驱动程序和输出设备之间绘图命令的转换。如果采用SDK方法编程,获取DC的方法有两种:在WM_PAINT消息处理函数中通过调用API函数BeginPaint()获取设备环境,在消息处理函数返回前调用API函数EndPaint()释放设备环境。在其他函数中通过调用API函数GetDC()获取设备环境,调用API函数ReleaseDC()释放设备环境。3.MFC提供了哪几种设备环境类?MFC将GDI绘图函数封装在哪个类中?答:MFC提供了下列设备环境DC类:CDC、CPaintDC、CClientDC、CWindowDC和CMetaFileDC等,其中CDC类是MFC设备环境类的基类,其它的MFC设备环境类都是CDC的派生类。GDI提供了绘制基本图形的函数,MFC将GDI绘图函数封装在MFC的CDC类中。8-12.画笔主要完成什么绘图功能?简述画笔的使用方法及步骤。画笔用于绘制点、线、矩形和椭圆等几何图形。画笔的使用方法及步骤如下:首先需要创建一个指定风格的画笔,创建画笔最简单的方法是调用CPen类的一个带参数的构造函数来构造一个CPen类画笔对象,以下代码创建了一个红色虚线画笔:CPenPenNew(PS_DASH,1,RGB(255,0,0));创建画笔的第二种方法是首先构造一个没有初始化的CPen类画笔对象,然后调用成员函数CPen::CreatePen()创建定制的画笔工具,例如:CPenPenNew;PenNew.CreatePen(PS_DASH,1,RGB(255,0,0));调用成员函数CDC::SelectObject()将创建的画笔选入当前设备环境。如下代码所示:CPen*pPenOldpPenOld=pDC->SelectObject(&PenNew);最后,在使用该画笔绘图结束后需要释放该画笔。如下代码所示:pDC->SelectObject(pPenOld); //恢复设备环境DC中原来的画笔PenNew.DeleteObject(); //删除底层的GDI对象8-13.画刷主要完成什么绘图功能?它有哪几种类型?画刷的创建与画笔有什么不同?简述画刷的使用方法及步骤。画刷用指定的颜色和图案来填充绘图区域。画刷有三种基本类型:纯色画刷、阴影画刷和图案画刷。利用画刷类CBrush可以创建画刷,与画笔不同的是:CBrush类提供的画刷创建函数有四个:CreateSolidBrush()用指定的颜色创建一个纯色画刷;CreateHatchBrush()用指定的阴影样式和颜色创建一个阴影画刷; CreatePatternBrush()用位图创建一个图案画刷;CreateSysColorBrush()用系统默认颜色创建一个指定阴影样式的画刷。画刷的使用方法及步骤如下:1)首先需要创建一个指定风格的画刷,创建画刷最简单的方法是调用CBrush类的一个带参数的构造函数来构造一个CBrush类画笔对象,以下代码创建了一个红色画刷:CBrushbrush(RGB(255,0,0));创建画刷的第二种方法是首先构造一个没有初始化的CBrush类画刷对象,然后调用成员函数CBrush::CreateSolidBrush()创建定制的画笔工具,例如:CBrushBrushNew;BrushNew.CreateSolidBrush(RGB(255,0,0));调用成员函数CDC::SelectObject()将创建的画刷选入当前设备环境并保留原来的缺省画刷。如下代码所示:CBrush*pBrushOldpBrushOld=pDC->SelectObject(&BrushNew);//将缺省画刷保留最后,在使用该画笔绘图结束后需要释放该画笔。如下代码所示:pDC->SelectObject(pBrushOld);//恢复设备环境DC中原来的画刷BrushNew.DeleteObject(); //删除底层的GDI对象15.文本输出函数有哪些?他们有什么区别?答:最常用的文本输出函数是TextOut()函数,该函数只能输出单行文本。要绘制多行文本可以调用DrawText()函数,另一个函数ExtTextOut()可以用一个矩形框对输出文本串进行裁剪。第9章作业P372:1.什么是模态对话框?什么是非模态对话框?调用 Create()函数创建对话框与调用DoModal()函数有什么不同?画出非模态对话框的工作流程图。答:所谓模态对话框,就是在其关闭之前,用户的输入焦点将一直停留在其上的对话框。与模态对话框不同,非模态对话框不垄断用户的输入,用户打开非模态对话框后,仍然可以与其它界面进行交互。调用Create函数来创建对话框于调用DoModal函数比较发现:由于Create函数不会启动新的消息循环,对话框与应用程序共用同一个消息循环,这样对话框就不会垄断用户的输入。Create在显示了对话框后就立即返回,而DoModal是在对话框被关闭后才返回的。在MFC程序中,窗口对象的生存期应长于对应的窗口,也就是说,不能在未关闭屏幕上窗口的情况下先把对应的窗口对象删除掉。由于在Create返回后,不能确定对话框是否已关闭,这样也就无法确定对话框对象的生存期,因此只好在堆中构建对话框对象,而不能以局部变量的形式来构建之。2.Windows提供了哪些通用对话框?MFC中封装这些通用对话框的类是哪些?Windows提供了下列通用对话框:颜色设定对话框,文件存取对话框,查找和替换对话框,字体设定对话框,页面设置对话框,标准的打印对话框,OLE对话框。MFC中封装这些通用对话框的类是:CColorDialog;CFileDialog;CFindReplaceDialog;CFontDialog;CPagesSetupDialog;CPrintDialog;COleDialog。第10章作业P425:1.MFC中ODBC数据库类主要有哪几个?它们分别完成什么功能?答:MFC中ODBC数据库类主要有如下5个:CDatabase类:主要功能是建立与数据源的连接。用户正是基于此连接实现对数据源的操作。CRecordset类:主要功能是从数据源中选出的一组记录。该类对象使用户能完成在记录间的滚动、更新记录、对记录进行过滤排序等操作。CRecord
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水产干腌制过程中的颜色变化考核试卷
- 炼铁产业链优化与整合考核试卷
- 双十一胜利密码
- 内蒙古鸿德文理学院《健康教育学》2023-2024学年第一学期期末试卷
- 江苏省泰州市高港区许庄中学2025届初三下学期开学暑假验收考试生物试题含解析
- 内蒙古自治区呼和浩特市四中学2024-2025学年初三下学期9月阶段性检测试题化学试题含解析
- 宁夏艺术职业学院《基因工程原理》2023-2024学年第二学期期末试卷
- 四川省遂宁市重点中学2024-2025学年初三下学期第一次大练习(期末)生物试题含解析
- 焦作大学《医学微生物学A》2023-2024学年第二学期期末试卷
- 山西省泽州县晋庙铺镇拦车初级中学校2025年初三第一次中考模拟统一考试(物理试题文)试题含解析
- 2023版肝硬化腹水诊疗指南解读
- 工程竣工验收申请表范本
- 《香格里拉松茸保护与利用白皮书》
- 台州职业技术学院《大数据财务分析》2023-2024学年第一学期期末试卷
- 先天性高胰岛素性低血糖血症病因介绍
- Excel高效办公应用与技巧知到智慧树章节测试课后答案2024年秋四川职业技术学院
- 数字化赋能应用型高校实践教学改革研究
- 《前列腺癌筛查及治疗的临床研究进展》
- 2024年云南省初中学业水平考试地理试卷含答案
- 11.5 歌曲《卖报歌》课件(14张)
- 2024年新疆中考数学试卷(含答案解析)
评论
0/150
提交评论