




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章Windows应用程序3田Windows编程中窗口的含义是什么?解答:商口是h%n山抽£应用程序中的基本操作单;匚是应用程序和用户之国交互的接U环境,也是系统管理应用程序的基本单位.编写一个Wit1dows原用程序首先应创建一个或多个窗II,随后应用程序的运行过程即是窗口内部'窗口与窗口之间,窗口与系统之间进行数据处理和数据交换的过程。3国事件瑁动的制衣是什宓?解答:Witidowf操作是建立在事件躯动执行程序基础上0与利用自顶向下设计和执行的传统过程式编超方式完全不同0在,里用面向过程的编程方式时,程序川发者是处•『完全支窗状态口程序执行的流程遵从程序员预先规定的路源c而面向对象的Wmd。松程序的执行顺序则取决于事件和消息的发生顺序.所谓消息是描述事件发生的信息。巧我们单个按钮时,系统就产生一条特定的消息.表本此按钮事件的发生.程序的执行顺序是由顺序产生的消息驱动的,所以面向对琼的Willow&程序的设计重一点是编写事件和消息的处理程序.程序员可以根据洎总类型编写在序以处理接受的消总,或者发出月他消息以盥动其他桎序,但是不必做先确定消息产生的次序.事件驱动的这些特点村于编写交互式的程序很有用处口B司Windows应用程序中加消息传递是圳何进行的?请举例说明。解答;W诒而的为趣用程疔提供称为消息队列的保留区。由Windows以及由其他由用程序向用户的用用程序发送的全部消息都存储在此队列里、等待调用.SDK程序以特定的循伍调用Windows消息,称为消息循环,如下代码表示此循环一直运行直到程序接受终止执行消息时才停止;while(GelMessage(&msgaO,0,D))1lanslutuMefisagefDispatuhMbsjsaj;e(fems-g):在whili:循坏内部,由循环的每次迭代调用WindowsAPT胞数GotMessagc(&Tnsg,0,0.5以得到消息队列中的F一个消息,并把它存在特定的MSG结构体变量切空中,TtatNal匕Mhg也鸵(&iriNg)宓现键盘上某个键的翻译口DispatcliMesndge(T域sg)函数向窗口的消息处理函数发送消息,调用相附的消息处理函数口完成后进入下一个循环.例如,如果得用户单行鼠标的左键.系统聘发送一•条WM.LBUTTONDnWM消息到垓程序的消息队列.在消息循环中山6观M心却峭仪&心隔。,。、口)函数得到此消息并把它存储在MRG结构体变量m整中:然后调用TtanElate第(疝tmg)函数“如果不是键盘消息.则此函数不做任何处理,接着调用DispntcbMe*罐81fcm耀)函数将此消息发送至消息处理函数WndProc.在消息处理函数中执行相购的消息处理程序;然后进入到F一个循环.日词句柄的作用是什么?请举例说明“解答:句柄是画用程序中用来标识对象的一个整型数值,通过句柄能蟾访问该句柄所标识的对象,进行一定的操作、例如,叮以利用函数CreateFont创建字体.返回伯是字体句柄hFmi,那么此句柄就是这种字体的代表.以后要使用此字体时调用字体句柄hFont即可.句柄的作用是升女”请举例说明.解答:句柄是应用程序中用来标识对象的一个整型数值,通过句炳能够访问该句柄所标识的对象,进行一定的操作「例珈,可以利用函数CreHut]I创建亍作:返回信是字体句柄bFmL,那幺比句柄就是这种字体的代滋,以后要使用此字体时调用堂体句柄hFont即可口S51一个Window*胸用程序的量基本构成应有哪些部分?解答;Window余应用程序艮仃相对固定的业本结构।山WinMain函数和WndProc的数构成某本框架.WinMain函数是所有*’也此八函数的人口,变似C语言的rm而羯数,其功能是完成一泵列的定义和初始化工作,井产生消息循环.消息循环是松个程序运仃的核心.WinMain函数主要由以下几个部分组成二(1)定义并注册窗口类;⑵建立窗口;(3)产生消息循环.窗口函数WndProc定义了附用程序对接收到的不同消息的响应,其中包,含了应用程序对各种可能接收到的消息的处理过程,是消息处理分支控制语句的集合匚通常「窗口函数由一个或多个反日让品..m就语句构成,每一个case语句时应一种消息的代码处理模块,当应用程序接收到一个消息时.相应的血就语句被激活并执行相威的模块.B司应用WindowsAPT函数编程时有轩幺特点?解答;应用Wi力dowgAPI函数编程时,要依据如题白匐所示的某本编程小骤.而口要详细者虑对可能接收到的消息的具体处理.国用WindowsAP工编程是E视化编程的基础,不像肾接利用MFC编旌口利用MFC编程时,部分框架的代码是由系统克接生成的,而利用WindowsAH函数进行编程,所有的代码需要用户自己完成,虽然编写程序比较繁杂,但能从最根本、量底层上了解可视化编程的整个体系口因此,要完全掌握可制.化端程并掌握系统的开发,学习WindowsAPI编程是必不可少的环节。第四章Windows的图形设备接口及Windows绘图口切什幺是图出设备接口?解答:Win如触应用程序使用图形设备接口利Windows设备驱动程序来支持与设箸无美的图形.图形设备接口(口小)是W沁圆a系统的说要组成部分,杀贡系统与用户或绘图程序之时的信息交换,并控制在输出设备上显示图形或文字口GDI的设备无关性是Windows操作系统的特色之一口对于汗发人员而言,所做的工作仅仅是在系疏的帮助卜建立一个与某个组际输出设备的美俄,以要求.系统加囊相植的设备驱动程序,然后调用固定的GDI函数进行输出即可,其他的操作山系统完成.口2】如何进行图形的刷新?解答:图形刷新包括刷新的请求,系统对刷新请求的响应以及具佃的刷新方法.(1)刷新请求力发生窗口大小的调整、窗U的移动或窗U被其他对象覆能等情猊后,都必须刷新窗口用户区的内容।以恢莫用户区内应有的显示形态。但是、Vmdu*s系统并不,也是记录窗口中需保存的内容,系统只能在有限的几种情况卜自动刷新「因此,境用程序必须具有及时处理刷新请求和刷新图形的功能.Witubw*系统通常发送WMPAINT消息将刷新请求传递给应用程序口(2)系统对刷新请求的响,应刷新布■三种可能一分别是窗口移动后的刷新、被覆.盖区域的刷新以及J象穿越后的刷新.(3)系统对上述三种刷新提供的相应的方法①窗口移动后的刷新:系统发送WMPAINT消息,由消息处理雨数完成刷新:②被覆盖区域的刷新:Windoww系疑试图保存被覆盖区域的副本.以备以后刷新,如果不能有效刷新,则向应用程序发送WMPAINT消息;③对象穿越后的刷新:此时系统向动完成刷新任•务,阳用程序不用考点=■3如何获取绘图工具的句牺?解答:指见的绘图工具上要仃画第和画刷.获取绘图工具的句柄就是获取画革和画刷的句柄.有两种方法能获得画笔句柄.(1)调用函数GeHUxikDbjeci获得系统定义的四种画第:WHITEPEN,BLACKPEN,DCPEN和NULL.PEN;(2)调用函数CreatePtm山用户创建画笔口G巳[StockObject和CreaiePen这两个函数的返回值都是画笔句柄口有三种方法获得画刷句柄:(1)调用函数GeiSLockObject获得系统定义的七种画刷;(2)调用Creat四WidBru由定义具有指定颜色的单色画刷;(3)调用函数CreateHatchBrush定义具有指定阴影图案和颜色的画刷口上述这三个函数的返回值是画刷句柄口(2)调用函数CreatePtm山用户创建画笔口GelStt>ckObjectWCreaiePen这两个函数的返回值都是画笔句柄口有三种方法获得画刷句柄:(1),调用函数GelSLockObject获得系统定义的七种画刷;(2)调用•四WidBru由定义具有指定颜色的单色画刷;(3)调用函数CreateHatchBrush定义具有指定阴影图案和颜色的画刷口上述这三个函数的返回值是画刷句柄。皿用如何定义映像模式?衅答:映像模式是被缶描述表的内容之一,其优点是程序员可以不必考虑嫡山改务的坐标系情况,而在一个统一的设备坐标系中完成图形的绘制与操作,Windaw仃E种映像模式口其中MM-TEXT映像模式得到了普遍的应用,是默认的映像模式,其特点是登辑坐标和物理坐标都以像素为中位.MMISOTROPICMMANISOTROPIC两种映像模式通过将图形从程序员定义的逻辑设备窗口映像到物理设备的视I」以要现坐标转换「窗口是对应逻辑坐标系上程序员设定的一个区域,视U是对应于实际输出货品
E程序员段定的一个区域n定义了窗口和视口后Windows系统即可按照窗口和视口的坐标比例自动调整图形」注意:MM-1&OTROPIC映像模式要求X和Y方向的映像比例相同,这种要求可能导致系统强制变换视口.应用程序可以调用函敬CNMapMo也得到当前系统的映像模式,•调用函数SelMap-VI。加设置系统定义灼8种映像模式■:然后可以调用函数&tWii】dnwENLEx设置窗口区域大小.调用函数SeEViewporLExihx设置视LI的大小,视I」和窗口的默•认原点均为[0,0)口还“J以调用函数SetWindowOrgEx和函数SeiViewpurLOrgEK来设定窗l-l和视I1的原点.注建量后这两个函数另有在MMLSDTRDPIC利MMANIM)TROPK1这两种模式下才有用,定义了映像模式后我们就可以在窗口上绘制相麻的图形了口第五章文本的输出方法与字体的设置占田如何找取字钵句柄?解答:可以通过两种方法於得字体句柄;(1)选用系统提供的]种基本字体首先定义字体句辆变最BFHbOM-JtiH:然后调用函数hF=GetSi帆kObjecM…J获得系统字体句柄:调用函数注1现田田帕1小业,hF)将字体句柄选人设备环境。12)创建自定义字体系统提供的字体往往不能满足同用程序的要求.实际卜中文的字体是很丰富的,目前40多种字体.程序昼可以调用函数Crw集Fsn创建力定义字体,并把返回值赋给一句柄变局a然后峋用函数比gbj小将创建的字体句柄选人设备环境.自3】如何创建向定义卞体?hP-CreateFun1ininHright1hP-CreateFun1ininHright1ininWidLh.inInKstapenitHlhinInOTienalioii.DWOKDnW由曲LDWCftTlDwlMtic,DWOKDd\Uriideiline,DWORDdwStrtLeoiit,DWORDciwCharsel,/字体而应,取0网采用系藐然认值,使用逻辑单位“字体宽度.取。则由系统根据高宽比取最佳值,使用遇辑单位,,年行文宇相对于页底的角度,以I,如之•度为单但3每个文字相对于页底的角度1UI•丹之•庶为单位打字体粗骊度,取值范南为。-1丽n如果要靠字沐倾.斜.划取北零〃如果要求下划线,则取小零」/卯果要求删除戡,则取••军3字体所属字符集口WORDdwOurputPrecisinn,,/输出精度,一般取霖认fSOUTDEFAULTPRECISDWORDLiwClippTeciJiion, k翦裁精度,一般取默认值CLIPDEFAULTPRECISDWQRD出yQu点号, //输出质量,一般取默认信口EFAULTQUALITYDWORDdwI^LchABdFamily,,,字体的鸾距及字体的系列,一般取默认艇DEFAULTPITCHDWORDipsaFaceuiffne "字体农其中hF是字体句柄。
RT】圳何设置字体的颜色和背景色?解答:在字体句柄被创建后,还可以设置字体的颜色和背景颜色,以兼得精美的输出效果。应用程序通过调用函数后安丁41亡0101(n明仃€。101)设置字体颜色,11出:是设备环境句柄/rCHor为设置的颜色°通过调用的数BetBkCaloNtide,心式田。门来设宜背景班色.64】文本是如何输出的?解答;文本的输出过程包括获取字体信息、格式化文本.调用函数输出文本等具体过程.(1)获取字体信息府用程序在输电文本之前必须获取当前使用字体的仃夫侑思,如当时使川宇体的了符高度等,以确定文本格式和r一打字符的输出位置.程序调用函数GetT"lMwM(hdc,也lm)来获取字体信息,其中tm是包含字体信息的TEXTMETRICS结构体变星,Q)格式化文本格式化文本分两种情况,篇一种情况是硝定后续文本坐林,此时只要调用函数Get-TextEitenlPuinl32得到一个Chize结构体变员,该变量包含字符宽度信息,通过计算得到下一个字符的X坐标.第二种情况是确定换行时的文本坐标,利用前面得到的字体佶总结构体Lm和当前行的Y坐标计算F一行的Y型标口(3)文本输出常用的文本输出函数1r『:TeKtOLit.DrawText和TabbtidTextOul等,K中以函教Te&lOut最常用,这三种方法的特点见表具体的函数形式见帮助文件「表5T=种文本输出函数雨蛰TeilDui雨蛰TeilDuiDtjwTextJ'ijbbeJTextOut使用当前选中的字体周颜色在指定的位置上绘制正文字符串在绐定的矩形内根据指定的方法格式化文本在指定的位直上根据播定的方法喻出字符串第六章Windows应用程序对键盘鼠标的响应峪用应用程序如何响附键指消息?解答;键盘作为输入设备.是Witl鲍WS应用程序中卜分重要的愉人手段。当用户按卜’或释放一个键时,键就KEYBOARD.DRV中的演端中断处理程序对所出键进行编屿,并调用Window孱的用户模块USER.EXE中的有关程序来产士健搬消息.战终发送到眦用程序的消息队列中去等待处理口键盘上的每一个控都有一个惟一对应的标审慎,称为扫描码v当用户按卜或在驿放某键时,都会产生这个与设务有关的扫描码,设备在动程序椽取彼的扫描码后"把它翻译成为与设备无关的虚拟码,这样键献的输入就会产生一条消息、它包含仃扫描码、虚报码以及其他与i占施・行美的信息.设备驰动程序将消息发送到系统的消息队列中,然后山WiMows将消息发;送到相应的线程消息队列中。最后,山WndProc函数从港息队列中取出隧盘消息.迸行必要的处理口酎2】应用程序如何响应鼠标消息?解答:鼠标作为一种定位输入设有在Window,司融化编程中得到了广泛的应用,选过展标的单上、双击和施放功能,用户可以很容易地操作恭于WiM口,■图形界两场应用程序.鼠标曳动程序在后动wm加时装入,W诂加川区操年系统通过副标驱动程序能检测出鼠标是否存在:若鼠标存在,则设备驱动程序就将检测到任何鼠标事件。悔当在窗口内打倒林事件发生时,窗口就接收到一个鼠标事件(以消息的形式发送给应用程序的窗口卜注意:能接受鼠林事件的窗口一定是活动窗「I或衿是具有输入盖点的窗IL鼠标消息如表6T所不.表A+鼠标的消息及其含义消息含义WNILBU1TONDOWN用户区内校卜鼠标左健WMLBUTTONUP用户区内松开馥标左键WM.LBUTTONDHLCLK■H门区内双击鼠标左锤WM一MBLTTONDOW>J用户区内按下鼠标中懒WM.MBLTTONIIP用户区内松开鼠标中键WM.1HBLTTONDBLCLK用户区内承卡鼠标中锢WMREUTTOhTDOWN用户区内按下鼠标右融WMREIITTOKUP用户区内松开熊标右艘WM-RLLTTrONDaDCLK用户区内现市鼠标石能wmlmbuttonmove用户区内移动鼠标在鼠标消息中,参数IParam包含了I礼标的位置JParam的高位包含鼠标的y坐标JPtir&E的低位包含了鼠标的K坐标;蓼数wParam包含"一个指示各种虚拟吗状态的以第七章 资源在Windows编程中的应用。由 商述菜单贯源的创建,过程0解答:菜单是WinUsv*将形用户界而中窗口的宣要蛆成部分,菜单可使用户直观地了解并方便地使用成用程序所提供的各项功能.创建菜单可以分为定义和加载两个步骤.(I)定义菜单菜单■在资源文件中的定义形式为:柒平帝MENU1庞坝I菜单项列表菜单弟表示拢定的菜单,应用程序通过菜单业加载指定菜单0MENU是关键字,用来表示贲源的性质。菜单项是菜单的细成部分.可用POPUP和MENUITEM来定义菜单项1:其中POPUP定义弹出式菜单,MENUITEM用来定义F拉式菜单一二在堡源文件中定义了菜单资源后,还需要在头文件中定义菜单项标识听时成的数位口(2)加载菜单加载菜单的方法行三种:①在窗口美中加载菜单wnJcla«&.IpszMeuuNiime-Ep^sMeiiLiNiinie;②在创建窗口时加载菜单苜先谡用LoadMenu加莪菜单,在CreateWindow函数中加入:CreaLelVinduwC…..… ..hMenu ):其中,是山函数LoadMe。山返回的菜单句柄》③动态加载菜息应用程序调用函数Lu向Menu获得莱单句柄后,可以调用函数SetMenu动态加载菜以631如何利用位阳资源?解答:位图是一种数字化的图形表示形式,是表示一个图像目标的一系列数据.对于绘图或图片一类的位图,数据显一般较人,为了提高显示刷新魅度,位图操作须在内存环境中进行口位图的操作包括定义、加囊、选入内存设备环境和输出.(1)定义位图句柄定义位图句柄的方式如F:HBTTMAP1曲itm叩;(2)加载位图陶用函数hBitmap=LoadBilMap(…J加载位图,获得位图的句柄■:(3)选入设务环境调用函数Cre让CompaiibJeDCI句系统申请内存设缶句柄,获取了内存设备句柄后,调用函数S■dObj班将位图选入内存设备环境口此时即可对其进行编辑口W输出位图应用程序调用函数BMElt将位图从内存设备环境中输出到指定的设密上.V41如何应用时说框资源?解答:M诏延是一个弹出式窗口.它一般用于程序需要用户输入或需要与用户进行交互活动的场合.对诂框中包含了众期的控件如按钮、滚动条、列表柩、编辑也等.对话推分为“模态对话框"产『模态对话框”两类.如果一个程序包免停对话框,则根序必须也含行一个对诏框函数这个函数和窗I」消息处理函般类似,只不过窗I」函数用于处理与窗口有关的消息,而对拓框函数处理与对话柩有美的消息。”模态对祐框”的编程包括定义对话框赍源、显示对话框}构造对话框处理函数和关闭对话梅普.(1)定义对话柩创建对话框首先要在资源文件中定义对话框口一般形式为:对话框帝DIALOG1载入特牲选项]X,Y.W沁th」I嚏hE[设置选现对语框的控件定义;对话框的控件定义可以包括按钮,嵬选框、组合框、列表框等常用的Windows控件口(2)显示对话框在程序中的合适位置调.用函数DialogBox来显示对话程.(3)构造对诂框消息处理函数对诏框消息效理函数的一般形式为BOOLCALLBACKDlgPruci...)swiLch(uies-滋igc)CitieWMINTTDIAI.GG:retuimi1;WM.COMMAND:hrwik;此消息处理函数的参数与土窗口处理函数出似.但对证•框处理函数的返回估:万上窗n的处理函数不同,对谄•框消息处理函数返回BOOL值,而主窗II函数返回LRESULT的」对话框处理函数不处理某些消息圳WMPAINT、WMCREATE和WMDESTROY等;此外,对未定义的消息蚀理不同,主窗口函数通过调用DefWindow?rec随致完成对未定义处理过程消息的处理,而对语框消息处理函数如果接收到未定义处理过理的消息,则返回FALSE(return0).(4)关团对话框在村诂框消息处理函.数中的合适■位置调用函数EndDialog来关闭对,话框.“M模态对话框R的编程与*模态对环框”的编程类似,但在定义、创建及消息处理匕疔一些差别.定义的不同主要在设宜茂项上:“非模态对诂框小的样式一般为:STYLEWS.POPUPIWSCAPT1ONIWSVISIBLE,注意样式中一定要包含WSVIS1BLE,否期对话框不能显示出来口要调用造数CmateDialo老来创建和显示对话框,在主窗口消息处理程序中的消息能坏中必须包含酸获发往",『模态对话框”的消息,并将H发送到相质的消息处理函数中去处理的语句.如:whilc(GctMcfisagr(&ide^,NULL,0.0))if]!R/alogM已心邛巴(卜口1以&Esg)) F/此函数判断消息是否发往对话框TT3ns.Isi1pMKFtjj:命rnkg]:DiNpa.ti:hVTcsnnge(&msg);二一,要—口与"模态对诏框“3小模态对诩框FJ何区别?在编卷匕仃何不问?解答:(i)建模态对话框”不允许用户在关闭对话框之前切换到图用程序的其他窗u非模忠对话框”允许用户在该对话框与趣用程序之间来回切换.(刃“非-模态对话框”从WinMain函数的消息循环中接受输入:■(3)在编程上「巾:.模态对话框〃在定义资源时,必须在设置选项中包含WSVISIBLE,否则不能显示C{4}“模态对话机"谕用函数DialogBo^来显示对话框,而‘非模态对话框”阈用函数CrealeOiakig来显示片话相.行)"」1:模态对话植h需要在主陋数的消息循环中截次时诏框消息,但软模态对话框”不需要口6”‘模态对话框”调用函数HndDi410g关闭对话框一 II:模态对话框”调用函数DesiruyWindnw来关闭对话框.U蜀I如何利用图标资源?解答:一个图标代表一个应用程序的特殊最八位图,当在图标上双占鼠标左键就可以执行该程序.图标的操作类似于前而淡到的位图操作,也要经历图标的创建、在资源文件中的定义、图标的加曩等步骤.(1)图标的创建用户可以利用Windows自定义的图标,也可以通过图形褊,辑器自定义图标鬻式)⑵在资源文件中自定义图标当采用臼定义隹标形式时,要在资源文科中加入如下代得:圈标方TCON圈标文件由(3)在应用程序中加载图标应用程序是通过调用函数Lmdk皿来进行图标的加载的,此过程经常在定义窗口类时进行.形式为:wndcluss■hlcon=Loud1con{…);第八章MFC基础知识9汨MFC类层次中主耍包含了哪些类?解答:MFC类层次中主要包含以下各类:⑴CDbjtxt类,它是MFC抽象城类,是MFC中多数类和白定义子类的根类,它为程序员提供了许多编程所需的公共操作.这些操作包括:对象的建立和删除、小行化支持、对象诊断输出、运行时信息以及集合类的兼容等.(2)胸用程序体系结构类:它能提供多数,囹用程序公用的功能.双用程序类主要包含了与命令相关的类、窗口应.用程序类,文告视类和线程基类等。(3)可视对象类,它主要包括:①CW期窗口类,流类提供了MFC中所有窗I」的基本功能,它是CCmdTarget类的基英;②CViev/视类।该类表示框架窗口的客户区利显示文档数据并接受输入的客尸区;⑧CMenu菜单类,该类是C。用ect类的子类,用于管理菜单;④Cri^log对诏框类,该类从CWnd类中派生出来,对话框•子层次结构包括通用对诂框类CDi仙呜以及支持文件选择、颜色选择'字体选择、打日L替擦文本的公共对话框类;⑤控件类,控件了层次结构包拈若干类,使用这些美可以建在窗态文本、命令按钮、位图按钮、列表框等;⑥€€。玳血山好控件条类,控件条子结构为工具条、状;占条.对环•茶和分割窗.I建立模型;⑦。。由0忻绘画对象类,图形绘画对象子层次结构以CGdiOhjeel类为根类,可以川于建立绘画对象模型:如画笔,画刷、字体,,位图、调色极等;@CDC设备描述表类,该类及其子类支持设备描述表对蕊,是CObjec1类的子类,(4)通用类,此分类中的类提供了很多通用臊务I例如文件fd诊断和异常处理等,包括CFile类和CAichive^^CException异常类、模板收集类等}(5)OLE美,对象连接与嵌入COLE)子层次结构为支持OLE提供了9个类,分为3种:普通类、客尸类和服务器类0德)ODEC数据库类,开放数据库连接子层次结构提供了一些类来支持ODEC的特征,即通过这阴类可开发数据库愉用程序来访时多个数据库宽件.该层次结构中主要包含CDaiaBiise类xCXecordSeL类^CRecordView类等「3”如可应用应用程序向导?解答:Vkua1C++6。为了减轻程序员的T作果,特别增强了应用程序的向导功能匚应用程序向寻为程序员提供了一个一基于MFC的应用程序框架,程序员只要在此基础上增加实现算定功能的代码即可口一般通过以下步骤来实现:在Ne曾对话框(如图K-t中所示)中选择MFCAppWizatd(七\匕},在ProjectNa】ri七文本框中输入新建的项E.I寓如MyPrujecj单击0K按钮。在弹出的MFCAppWizard-Slep1对话框(如图8~2所示)中可以设置应月程序的类型.指定附用程序的结构是否采用文档4见图结用.以及资源文件所使用的语种等。应用程序类型主要包括:单.文档应用程序,多文档应用程序,菸于对话框的应用程序匚在再种列表框中一版选择中文作为货源文件的语种n单击图8省中的Meki按钮,将•弹出MFCAppWizard^Siep2of6对话框(如图8T所示》口在此对话框中设置应用程序所使用的数据库支持,它有四种选国,默认值是None,智咯所有的数据库支持.选择应用程序的数据库支持后,单山网"1按钮,弹出MFCAppWi53与lep3of6对记•框(如图生4所e).在此转诂框中可以设置应用程序所支持的复合文梢类型。这一步使程序员可以向执用程序加入OLE支持.设置完后,单击N“l按钮,将进入MFCAppWiEard-Sicp4近一对话框:(如图K5所示,在此可,以设置程序的外观,如是否使用工具档、是否有初始状态造、是否使用3D控件等等.设置后单JfNsi按钮,进入MFCAppW抽rdStep5讨6对话框(如图#6所示)、在此可以将窗口凶格设置为标准风格或Wind。雌8尔1口「鼓风格,还可以设置是否在他用程序中生成代I码注程,是以共享M念跳技库还是以静念盘按座的方式使用MFC库等方式u段直完后,单山四殳1按钮,世入MPCAppwizardStep6of6对证框(如图X号所示).在此可以设置向导生成的文件名和类名口设置后,单」iFinish按钮,弹出NewProjectInformation对诏框(如图8~8所示在该对话框中列出了关于建立的境用程序项目文件的相关佶息.这样应用程序向导所佝的工作就全部完成了、向导已经为用户生成了一个可执号的应用程序框架aBa在应用程序向导中能够创建那些类型的文件?解答:VisualC++6。可以创建的文件类型如表XT所示口表R*VfaualC++6口川,以创建的文件类型文件类型・说明文件类型.说明ActrueServerPag已创建活动服务需BinaryFile市逐一进捌文件BitinupFile创建位图文件C4+SourceFile物桂J+源文件口C十十HeadeiFUt创建GC十十头文件CurscuFiJt!和建光标文件HTMLP岬创建HTML文件kuFile粗建图标五件
MiicruFileRsDuneTciuplayMiicruFileRsDuneTciuplayTextFile创建宏文件创建贾源模板文件创立文本文件RtNimrttScrip(
SQLScriptPile创建资源脚本文件创建吕QL脚本文件第九章Windows标准控件在可视化编程中的应用②王常用控件仃哪些类型?解答;wmd#—提供了很多的控件,其中常用的控件主要包括:按钮控件、滚动条控件、睁态控件、列表柩控件、编辑框控件F组合框控件.控件为可视化编程提供了方便快捷的途径。◎m】按钮控件的特点是什么?解答:按钮控件是WEdci科速用程序中最常用的控件之一,它的种类较多,功能丰富.如彳r普通按钮”严单选按钮”产复选按钮”和“组合框按纪”等.“普通按钮”上可以设置文本和加载位图;“单选按钮“具有互斥性,当选中某一个选项时,其他的选项自动取消:“复选按钮”可以允许用户进行多项选择;组合框按钮”是一种特殊的按钮:既不处理鼠标和健欲输入,也不向其父窗口发送酒息,使用它主要是使界皿整齐.按钮作为一种『窗口,可以具有一些窗口的样式,另外还具有很多独衿的样式.纵目按钮控秤是如何应用的?解答:按钮是一种「常有■用的控件,它具有若「•用途-对于接收来门用户的命令或响应,一个F压式按钮是适当的选择「若存在若干个互相排斥的数据项,一组单选按钮是能让用户选择的方便的方法c如果若干个选项之间不互相排斥,一组复选框是比较好的选择.若要创建一个框架,将苴他的控件包围在其中,则常使用分组框.及/按钮控件分为几费?解答:在Windows中主要仃四种按钮:复选框(Checkb”5)、单选按钮(Radidbul—2ns}、卜4];式按钮(Pushbuitong)和,分组框fGixiupbux匕x)&占国各种按钮控件的类是如何定义的?觥答tCBuLton类是CWnd类的派生类,它同时只侑类的一切功能.类中的函数按照功能分为3类:(I)创建和初始化函数:构造函数用来初始化CBuilon类对象;C比Me■在窗口的指定位置创建(Eulluri对象匕(2)常用的CButton对象方法:GeiStaie获得一个按钮控件的选中、起棒和聚焦状杰;SMS堆场设置一个按钮的选择状态:GeiCheck得到一个按钮的选邛状态:SeiCheck设置一个按钮的选中状态;GEiButlonSlyle获得一个按钮的样或;SelButtunSLyle设定一个按钮的样式;SctQilmap设定按钮上.显示的位图;GciBilmap拄得按钮上.显示位图的句柄等.□)析构函数。总司哪些按钮控件需要初始化?解答:单选按钮和复选框獴钮需要初始化二炒为滚动条分为人樊?其类结构是如何定义的?解答:滚动条分沙’垂直策动条”和“水平滚动条”两种.滚动条类是CWnU类的派生关,它同时递承了CWnd的所有功能。类中定义的函数按照功能分为3类口)创建和初始化函数:包括Cg亡ZlBar构造函数1厂,至函数用十在窗口中创建一个糜动条:以)滚动条类方法函数:主要包括设置滚动条滚动范围的函数SelScrollRange,设置滑块位置一的函数取IScrollPos,得到滑块位酉的函数GctScrnl】Pm*,设理滚动条信息函|数AelScrollIn获得滚动条信息函数GetScrol]Infu等;(3)析构函数。期制I滚动条控件是如何进行消息传域的?解答:一个MFC程序需处理两种靠自凌动条的消息,这些消息可以通理消息映像项卸消息处理程序来完成.表9T是两个淮息映像项.表9I消息映像用消息映像意 义OM.WMli^C?RU!.L雪水平滚动条位置变化时.水平溶动条发送就捎息ONWMV5CROLL曾垂百濠动泰位置变化时,垂百流动军发送此消息看起来这个控科只仃恨少的消息.但实际上这两个消息映像中也含了井南十富的信息.MFC通过两个消息处理函数OnHScroll和OnVScron来处理这两条消息,这两个消息的原型声明如下:afxmsgvoidOnHScr011(UINTnSECude,U1NTilPok,CbcrullEkir^pScTiillEur)afx..nri^voidOnVScroll(U'J'NTnSECcdejUINTnPus.CtcrollBtir*pScrtiUBitr)其中p£b"lllHr指针指向发送消息的漆动条控种,nWBCom指明了一个可能的潦动条代码,也就是用户对滚动条操作的类型(如表9千所示).参数rPgx只有当通知代码为SBTHIJMBPOS1T[()N和SBTHUMBTRACK时d•仃政,表示节前滑块的位置.用户只需根据系统传递进来的消息来进行相应的处理即可口表9日滚动条的通知林用通扣代码含 义SBBOTTOM用户搂End疑废动到最大值SBEhTiSCROLL用户释放一今键.发送,些虚键码(WMKEYDOWN)滚动停止SBLINEDOWN向下滚一行SBLINEUP向上聚一,行SBLINELEFT向左淡一“行SBLINERIGHT向右生一行SBPAGEDOWN向卜滚一品SBPAGEUP向上赞一页SBPAGELEFT向左逐一血SBPAGLRIGHT向右梁一MSBTHUMBPOSITION拖动到绝对位置SBTHIFMBTRACK拖动滑■块到指世的位置SBTOP用户段动Hume键,濠砌到最小值片/编辑框控件是如何使用的?解笞:在使用之前一定要创建堀相框控件,行两种方法时以创建琉辑框控件:(1)利用VisualCh后jO向带的资源编辑器,把编朝框控件放置在指定的对话框窗1-1的合适位国,然后利用CE.淖W也用M把这个编辑框控件和一个CEdit对,象联系起来,(2)在程序U」定义一个CHdii对象.调用Create为编辑框控件设置参数和抨式来初始化CEUil对象.然后我们就可以调用各种编辑框方法来使用编辑框。常用的方法如h-:①心,”方浜将编辑框中的文本拷贝到剪贴板;②Cui方法将编辑框中的文本剪贴到剪贴板;③PHE化方法将剪贴板中的数据捕人到编辑推控件中光标所在的位置上;@Clear方法删除编辑框中当前的选择;⑤CauUinJu方法决定一人缠骨框操作是否可以撤销;⑥Uh也方法取消编辑框中的晨后一次的操作]⑦S&WM在编辑框中设定选择的范围;@Replacescl方法用指定的文本来代替选中的文本;⑨柒131方法获得编辑柩控件中当前选择的开始和结束.字符的位置.S>40]编辑框控件的类结狗是如何定义的?解答:MF「在美。肉1计中提供了标加的WirNnw*编辑枢控件服务,「Edt是PWnd类的宜接派生类,这就意味着它具有CWnd的所为.功能.CEW类的定义结构很熨杂,我们可以把该类的函数按功能作如下划分:(I)构造函数①CEdii函数用来初始化CEdit对象;②Cmite函数用来在窗口的合适传•置上建立编辑框控件。(2)通用cant类方法①CopyvGut.paste等剪贴板操作陶数;②UmkxCMU词口撤销操作函数;@SaS旬、Repla悦配1选择和替换画数;④SclModify.SeiRtadOnty等设置编辑框状态函数:⑤GelSeLGetModily>GelPasordChar等从编辑柩中得到输入和状态的函数口(3)多行编辑植方法此类方法只适用于多行编窗框.包含强tLiti鼠GctLin匕CjutihLlhul44ex等函数:因为CFidLt类是C;Wnd类的森生英一所以它汪具有CWntl类的方法,例如SelWin-dowTextfGetWindowText等等;取土I】编辑框控件是如何响应消息的?解答:因为MFC把标准的Windup编辑消息抖装入CEdit类方法中,--个MFC应用程序通常只处理通知消息,一个编辑框控件向它的父窗口发送通知消息,球以通过对每条消息编写消息映像和消息处理力.法的方式来获得和处理这些消息.消息映像和消息处埋方法位编辑框控件的女窗口类中实现.表显示丁对处埋CEM通知自用的消息政慑项口表什3处理CEdii通知的消息腺像鞘息映像项含 义ON.ENCHANGE当用户款变了编辑柢控件中的文本时发送此消息,和ENUPDATE通知稍息不1%诙遥知消息是在W诂d口WK更新里示之后发出的.ON-EN-ERRSPACE当编辑框控件不能办理足够内存满足指定文本要求时发送此捎息.,ONEN.IISCROLL篝用户按动编辑他的州平滚动条时发送此消息.父窗口在群幕史新前获得
此将息「ONENRTLLFOCITSON.EN,MAXTEXTONENSETFOCUSOWENUPDATE。汽ENVSCROLL当编辑框控件失去输ONENRTLLFOCITSON.EN,MAXTEXTONENSETFOCUSOWENUPDATE。汽ENVSCROLL日编辑框输入字符数超过指定数日时发送此港息.并且文本被截去尼部多汆部分匚“一编辑枢控件没白明AUTOHSCRQLL样式血情人字符数超11输指框控件的宽度,成力当堀娟恒陵有ESALPVSCKULL样式而输入总行数通过编辑控件的高度时也发璃此消息.当堀辑框接殳输入焦点时发:送此潸思,T编辑框控件修改的文本被重新格式化但带未显示时发送此消息.用户按动褊料椎控件的垂直波动条时发送此消息,父窗口在.屏幕更断前获得此消息,第十章在MFC中创建应用程序的资源□(HJ菜单类的结构是如何定义的?解答:菜单类(CMbhu)是从类亡ObjeclF派生的,按照功能可■以将它分为以卜一几个部分:(i)CMenu类特征鼠这包含了菜单句柄变量mhMenu,它代表了创建菜单的句柄,还有一个获得菜单旬柄的函数GedafeHni巳nil,一个操作符HMENU:(2)构造国数此处包含了制建菜单函数CreawM己iiu、制建弹出菜单函数CreaLiPLjpupMEmi、加载菜单函数LoadMenu等;(3)菜单操作包含了删除菜单De跄出Menu函数、创建快捷菜单函【数TtackPopupMeti□等;(4)菜单项操作函数主要乜含了添加菜单项函数AppeiMMaiu、插入菜单以函数]nserLMaflLi>修改菜单项函数MndNyMtinu、删除菜单项函数僮已由廿七卜0】"、使菜单项有效和无效的函数EnttHMMcnullCE、设置和取消选中标志的函数CheckMenuLem、得至U指向子菜单句柄的函数GelSubMenu'得到指向子菜单1D号的函数GelM巳imltEmJD等;(5)析树函数折物函数是构通函数的逆操作.[10^1如何给菜单连接一个类?解答:当我HI创建和编辑完菜单后,应该给菜单连接一个类,因为菜单实际上是一个对缥,是窗口或对话框的一个资源,它将调用窗口或对话框中的一些成员函数和成员变:最,所以由该把它连接卜.一个娄,使它成为该派生窗口类或派生对话框类中的一个成员变量.创建和编辑完菜单后,在菜单上单击鼠标右键,在弹出的快捷菜单中选中口需.WiiaTd命令.在显示窗门的同时,显示用一个对话框,该对M标询向是增加一个新类还是选择一个口存在的类进行连接;,如果对话框类或窗口类已经存在,选中Selectanexisting/酩选项口单出OK铤后,在SelcxlClass对话框中选择要连接的类即可.口。3】工具条类的结构是如何定义的?裨答:丁具条类的基类为CCnnlrNBaj而该基类是山CWnil美派生的.山于所有的控制条都是山CWntl我派生的.所有的控制条部连接到一个WindowsAPJ窗口口因此,CWnd的所有功能加创建、移动、显示和隐藏窗口等在用控制条工作时都是可用的「
CToHBai■类提供了许多工具条的处理方法,这些方法分别是构造方法、工具条按钮的操作方法和樵视方法..(1)构造方法:构造方,法用来建立Wmdtws工具条CToulBar对象并在运行时将它们附加到框架窗口上(见表1MK表104CTwiiBar的两造方法方法-睨 明Create0期建一个工具条并把它掰加到CTglDm对象上Cre.at&Ex()创建一个定义丁辿界的丁一具条井杷它附加到匚代加对象上设置按钮及位图大小SctHeightQ设置工具条的高度装装T具条变源LoadBitrnapO装载包含P具按密图像■的位图客巴tBiEm叩。设置包圈图像SetButtonsO设置按和并使每•个盘包与位鸭性1像相关(2)工具条按钮的操作方法:工具条按钮的操作方法是用来处理某一工具条按钮的这些方法具体说明加表1。省所示口a10-2工具条按钮的操作方法方法说 明CornmandTultdex()返回鳍定命令的工具条按钮索弓iCistlterrilDO返回指定索引的按钮或分编符的1DG巴返|口.|指是索羽的按钮的显示区域GstButtonSiyle()获得按钮风格SuiButtDnSlyijf)设置按钮风格GelBuLtunInrc()获得按钮14风格、图像号SetBuTtoElntc(j设置按钮1口、风格、阕像号GetButton }蓑得显示在按钮上的文本SetButtmiTej(t()设置显示在按钮上的文本另外CToolBar类中还包含了一些成员变量:如msiaeltna^e代表了位怪的尺寸;情舒优ButBri代表了当前按钮的尺寸等。此外还有虚拟方法,虚拟方法读者迎以从工具条撰结构中得到,在此不再赘述口104】工具条需要哪些贾源?解答:工具条中包含了工具栏资源,工具栏资源又包含了加在工具栏上面的按钮资源和位图资源。a仙何改变工具条的停靠风格?解答:荏默认状况卜,一个CToo出射工具条只能被应用程序所移动.但也可以使用户能够将工具条移到框架窗口的为一部分0为此I需向工具条及框架窗口发送消息口这可通过耐用CTnolBar::Hnahl已Docking和CFrame::Enab1eDi)cking实现「〜曲数原型均如穆vuidEiabIcDockin^(DORDdwSlyle);其中参数dwe为T具条风格,对于CTaolBar,其取值期表10T所示。表lft-3CTuolBar的风格恢格意 义说明
CBRSALIGNBOTTOMCBRS从LIGMRIGHTCBRSALIGNANYCBRSFLOATMULTIT具茶可在客门区项潮稷动工具条可在客户区底端移动工具条打在客户区左端移动工具茶可在客月区右端移动工具条可在客户区任意位置移动CBFSALIGNTOPCBRSALIGNLEFT允许在一窗口内存在学干叮樽动抻混条对于CFraine不可用CBRSALIGNBOTTOMCBRS从LIGMRIGHTCBRSALIGNANYCBRSFLOATMULTIT具茶可在客门区项潮稷动工具条可在客户区底端移动工具条打在客户区左端移动工具茶可在客月区右端移动工具条可在客户区任意位置移动CBFSALIGNTOPCBRSALIGNLEFT允许在一窗口内存在学干叮樽动抻混条对于CFraine不可用第十一章单文档与多文档打叼文档类的转构是如何定义的?解答:所有的文档类都以(?43n1门让类为其某类.enl类摄供了文档类所需要的最基本的功能实现.它提供的方法主要有一般方法和虚拟方法.表11T是CDncdinefti的一般方法自表111CDoirimkcftt的一股方浸GotTitle()SeiTiJe()GklPilhXame()SclPwtbNiimH)GeiDocTempiiiteQAddVkw()ReiniiveVieu?()UpdaizeAIIViewsl)r>EhC(>iiiieelCDncdinefti的一般方法自表111CDoirimkcftt的一股方浸GotTitle()SeiTiJe()GklPilhXame()SclPwtbNiimH)GeiDocTempiiiteQAddVkw()ReiniiveVieu?()UpdaizeAIIViewsl)r>EhC(>iiiieelV定调)GetFile0茨得文档标题■他置文料标度获得文档数据文件的潞林字符串设置文档数据文件的路在字符串获得指向描述女网类型的文档嚏梭的指针向与文档相笊联的祝图列表福加指定的视图从文科视囹列定中期除视图通知所有视图,文栈已被修以,,它们应该重而使文伫勺视图相分离出导指出CFi加类型的揩针表11TCUMUIiHMt的虚拟方法OnNewL>)cuinent()OnOpcuDociiiiienl(1OnSaveDocument()011(1JctSiclJocuTTHiT11()CunC1ojjeFrlime()DclcLeCDnirnlii()KeleaseFiht)SaveMt)diJ'ietl()IsM(?dificd()SeiMcdifiedFJ^OGetHrsrVie\vPqsitinnUGetMeKtViewf)由MFC调用来建立文档由MFC诩用来打开文档由MFC调OnNewL>)cuinent()OnOpcuDociiiiienl(1OnSaveDocument()011(1JctSiclJocuTTHiT11()CunC1ojjeFrlime()DclcLeCDnirnlii()KeleaseFiht)SaveMt)diJ'ietl()IsM(?dificd()SeiMcdifiedFJ^OGetHrsrVie\vPqsitinnUGetMeKtViewf)口1孑】CDocumenl类的派生类的构造步骤是如何进行的T解答:一股来说,从口1孑】CDocumenl类的派生类的构造步骤是如何进行的T解答:一股来说,从CDncumtnt类派生自己的史梢类所需的典型.步骤为:(])为每一"t文档类型从Cl?ocuiTien[类]当然也可以总尺他CDocunienl类的派生类)派生一个相应的文档类。(2)为文档类濡加成员变量.这些成员变量用来保存文档的数据,其他对象(如与文裆相美联的视图)在接或向接地访问这些成员变量来读取或更新文档的数据.(31里载Seriiih2e成员函数,实现文档数据的串行化0山用文档模板类的结构是如何定义的?解答:文档模板类口口“口叫>山彼类是从CCindTiirg就类卜派生的,CDgTemphik类提供了文档模板类所需要的最基本的功能实现.它提供的方法分别是一般方法和虚拟方法(■如表11T所示兀方法GctDucSirinL方法GctDucSirinLoadTsnipInte()Ad([IJ»ciiTnenl()ReTnoveD[)cuinent(>GelFirsiDocPi)siLion()GetNctKtDci仪)CreateNewDucinnent()L'esiLeNt;wHritm已()OpenDiTciimeTitFilei}CjuseAllDucLinjenlOSetDcfmiltTiLIe()SaveAHMixh)说明获得号文档相关的字符串加载指定的模板给文鞘模板康加指建的模板从文档模桢列表中删除文档获得吁文档模板相美的第•个文样的位置获得文档及下一个文档建立文首建立包含文档周视图的框架窗口打开由路程帝指定的文档美闲所有文档见示文梢窗口的标题栏中默认的标题查询文档模板的修改状态并存悌?之关联的所有文档在VC++6力中,文档类,与文档类相关联的视图类以及为视图类梃供显示的框架窗口都是由文档模板创建的’每一种文档类型都有一种文档模板与之相对炖,文裆模板负贡创建和管理该文档类型的所有文档.文档、桃图利框架二者之间的轶系是通过文档模板的构造函数来实现的口BW1视图类的结构是如何定义的1解答:「言"斐是从CWnd集卜-派士的JI1于肝有的从「V沦w英派牛的娄也都是由CWrul类间接派生的,所有的这些类都具仃CWnd的所有功能,如创建、移动、显本和隐藏窗口,因此CView类可以接收任何Wi力必ws消息.CView类提供了爻档类所需要的最慕本的功能实现.它提供的方法分别是一股方法和虚拟方法.(1)一般方法:一般方法如表所示口表11TCVfeH类的一股方法方法说 明GelDvuument()获得指向与视图赳关联的文档的指计DoPrcpar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生政策研究成本分析岗位职责
- 旅游行业成本管理及优化措施
- 教育帮扶项目中的教师心得体会
- 科技企业员工文化创新措施
- 假如我是宇宙探测员12篇
- 物联网芯片系统级能效优化研究-洞察阐释
- 中国常春藤提取物项目投资计划书
- 生态经济视角下的觅食者资源利用研究-洞察阐释
- 生命教育与安全意识课程计划
- 内镜室团队建设与培训计划
- 混凝土预制构件项目可行性研究报告
- 2025年公牛插座市场调研报告
- 无人机拍摄培训课件
- 特岗教师科学试题及答案
- 抖音员工合同协议
- 银行培训中心管理制度
- 锂电池基础知识培训单选题100道及答案
- 2025年陕西省八年级中考三模生物试题(原卷版+解析版)
- 高分子化学材料结构与性能试题及答案
- 客服质检管理竞聘述职报告
- 矿山雨季四防安全培训
评论
0/150
提交评论