




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三章Windows應(yīng)用程序3田Windows編程中窗口的含義是什么?解答:商口是h%n山抽£應(yīng)用程序中的基本操作單;匚是應(yīng)用程序和用戶之國交互的接U環(huán)境,也是系統(tǒng)管理應(yīng)用程序的基本單位.編寫一個Wit1dows原用程序首先應(yīng)創(chuàng)建一個或多個窗II,隨后應(yīng)用程序的運(yùn)行過程即是窗口內(nèi)部'窗口與窗口之間,窗口與系統(tǒng)之間進(jìn)行數(shù)據(jù)處理和數(shù)據(jù)交換的過程。3國事件瑁動的制衣是什宓?解答:Witidowf操作是建立在事件軀動執(zhí)行程序基礎(chǔ)上0與利用自頂向下設(shè)計(jì)和執(zhí)行的傳統(tǒng)過程式編超方式完全不同0在,里用面向過程的編程方式時,程序川發(fā)者是處?『完全支窗狀態(tài)口程序執(zhí)行的流程遵從程序員預(yù)先規(guī)定的路源c而面向?qū)ο蟮腤md。松程序的執(zhí)行順序則取決于事件和消息的發(fā)生順序.所謂消息是描述事件發(fā)生的信息。巧我們單個按鈕時,系統(tǒng)就產(chǎn)生一條特定的消息.表本此按鈕事件的發(fā)生.程序的執(zhí)行順序是由順序產(chǎn)生的消息驅(qū)動的,所以面向?qū)Ν偟腤illow&程序的設(shè)計(jì)重一點(diǎn)是編寫事件和消息的處理程序.程序員可以根據(jù)洎總類型編寫在序以處理接受的消總,或者發(fā)出月他消息以盥動其他桎序,但是不必做先確定消息產(chǎn)生的次序.事件驅(qū)動的這些特點(diǎn)村于編寫交互式的程序很有用處口B司W(wǎng)indows應(yīng)用程序中加消息傳遞是圳何進(jìn)行的?請舉例說明。解答;W詒而的為趣用程疔提供稱為消息隊(duì)列的保留區(qū)。由Windows以及由其他由用程序向用戶的用用程序發(fā)送的全部消息都存儲在此隊(duì)列里、等待調(diào)用.SDK程序以特定的循伍調(diào)用Windows消息,稱為消息循環(huán),如下代碼表示此循環(huán)一直運(yùn)行直到程序接受終止執(zhí)行消息時才停止;while(GelMessage(&msgaO,0,D))1lanslutuMefisagefDispatuhMbsjsaj;e(fems-g):在whili:循壞內(nèi)部,由循環(huán)的每次迭代調(diào)用WindowsAPT胞數(shù)GotMessagc(&Tnsg,0,0.5以得到消息隊(duì)列中的F一個消息,并把它存在特定的MSG結(jié)構(gòu)體變量切空中,TtatNal匕Mhg也鴕(&iriNg)宓現(xiàn)鍵盤上某個鍵的翻譯口DispatcliMesndge(T域sg)函數(shù)向窗口的消息處理函數(shù)發(fā)送消息,調(diào)用相附的消息處理函數(shù)口完成后進(jìn)入下一個循環(huán).例如,如果得用戶單行鼠標(biāo)的左鍵.系統(tǒng)聘發(fā)送一?條WM.LBUTTONDnWM消息到垓程序的消息隊(duì)列.在消息循環(huán)中山6觀M心卻峭儀&心隔。,。、口)函數(shù)得到此消息并把它存儲在MRG結(jié)構(gòu)體變量m整中:然后調(diào)用TtanElate第(疝tmg)函數(shù)“如果不是鍵盤消息.則此函數(shù)不做任何處理,接著調(diào)用DispntcbMe*罐81fcm耀)函數(shù)將此消息發(fā)送至消息處理函數(shù)WndProc.在消息處理函數(shù)中執(zhí)行相購的消息處理程序;然后進(jìn)入到F一個循環(huán).日詞句柄的作用是什么?請舉例說明“解答:句柄是畫用程序中用來標(biāo)識對象的一個整型數(shù)值,通過句柄能蟾訪問該句柄所標(biāo)識的對象,進(jìn)行一定的操作、例如,叮以利用函數(shù)CreateFont創(chuàng)建字體.返回伯是字體句柄hFmi,那么此句柄就是這種字體的代表.以后要使用此字體時調(diào)用字體句柄hFont即可.句柄的作用是升女”請舉例說明.解答:句柄是應(yīng)用程序中用來標(biāo)識對象的一個整型數(shù)值,通過句炳能夠訪問該句柄所標(biāo)識的對象,進(jìn)行一定的操作「例珈,可以利用函數(shù)CreHut]I創(chuàng)建亍作:返回信是字體句柄bFmL,那幺比句柄就是這種字體的代滋,以后要使用此字體時調(diào)用堂體句柄hFont即可口S51一個Window*胸用程序的量基本構(gòu)成應(yīng)有哪些部分?解答;Window余應(yīng)用程序艮仃相對固定的業(yè)本結(jié)構(gòu)?山WinMain函數(shù)和WndProc的數(shù)構(gòu)成某本框架.WinMain函數(shù)是所有*’也此八函數(shù)的人口,變似C語言的rm而羯數(shù),其功能是完成一泵列的定義和初始化工作,井產(chǎn)生消息循環(huán).消息循環(huán)是松個程序運(yùn)仃的核心.WinMain函數(shù)主要由以下幾個部分組成二(1)定義并注冊窗口類;⑵建立窗口;(3)產(chǎn)生消息循環(huán).窗口函數(shù)WndProc定義了附用程序?qū)邮盏降牟煌⒌捻憫?yīng),其中包,含了應(yīng)用程序?qū)Ω鞣N可能接收到的消息的處理過程,是消息處理分支控制語句的集合匚通?!复翱诤瘮?shù)由一個或多個反日讓品..m就語句構(gòu)成,每一個case語句時應(yīng)一種消息的代碼處理模塊,當(dāng)應(yīng)用程序接收到一個消息時.相應(yīng)的血就語句被激活并執(zhí)行相威的模塊.B司應(yīng)用WindowsAPT函數(shù)編程時有軒幺特點(diǎn)?解答;應(yīng)用Wi力dowgAPI函數(shù)編程時,要依據(jù)如題白匐所示的某本編程小驟.而口要詳細(xì)者慮對可能接收到的消息的具體處理.國用WindowsAP工編程是E視化編程的基礎(chǔ),不像腎接利用MFC編旌口利用MFC編程時,部分框架的代碼是由系統(tǒng)克接生成的,而利用WindowsAH函數(shù)進(jìn)行編程,所有的代碼需要用戶自己完成,雖然編寫程序比較繁雜,但能從最根本、量底層上了解可視化編程的整個體系口因此,要完全掌握可制.化端程并掌握系統(tǒng)的開發(fā),學(xué)習(xí)WindowsAPI編程是必不可少的環(huán)節(jié)。第四章Windows的圖形設(shè)備接口及Windows繪圖口切什幺是圖出設(shè)備接口?解答:Win如觸應(yīng)用程序使用圖形設(shè)備接口利Windows設(shè)備驅(qū)動程序來支持與設(shè)箸無美的圖形.圖形設(shè)備接口(口小)是W沁圓a系統(tǒng)的說要組成部分,殺貢系統(tǒng)與用戶或繪圖程序之時的信息交換,并控制在輸出設(shè)備上顯示圖形或文字口GDI的設(shè)備無關(guān)性是Windows操作系統(tǒng)的特色之一口對于汗發(fā)人員而言,所做的工作僅僅是在系疏的幫助卜建立一個與某個組際輸出設(shè)備的美俄,以要求.系統(tǒng)加囊相植的設(shè)備驅(qū)動程序,然后調(diào)用固定的GDI函數(shù)進(jìn)行輸出即可,其他的操作山系統(tǒng)完成.口2】如何進(jìn)行圖形的刷新?解答:圖形刷新包括刷新的請求,系統(tǒng)對刷新請求的響應(yīng)以及具佃的刷新方法.(1)刷新請求力發(fā)生窗口大小的調(diào)整、窗U的移動或窗U被其他對象覆能等情猊后,都必須刷新窗口用戶區(qū)的內(nèi)容?以恢莫用戶區(qū)內(nèi)應(yīng)有的顯示形態(tài)。但是、Vmdu*s系統(tǒng)并不,也是記錄窗口中需保存的內(nèi)容,系統(tǒng)只能在有限的幾種情況卜自動刷新「因此,境用程序必須具有及時處理刷新請求和刷新圖形的功能.Witubw*系統(tǒng)通常發(fā)送WMPAINT消息將刷新請求傳遞給應(yīng)用程序口(2)系統(tǒng)對刷新請求的響,應(yīng)刷新布■三種可能一分別是窗口移動后的刷新、被覆.蓋區(qū)域的刷新以及J象穿越后的刷新.(3)系統(tǒng)對上述三種刷新提供的相應(yīng)的方法①窗口移動后的刷新:系統(tǒng)發(fā)送WMPAINT消息,由消息處理雨數(shù)完成刷新:②被覆蓋區(qū)域的刷新:Windoww系疑試圖保存被覆蓋區(qū)域的副本.以備以后刷新,如果不能有效刷新,則向應(yīng)用程序發(fā)送WMPAINT消息;③對象穿越后的刷新:此時系統(tǒng)向動完成刷新任?務(wù),陽用程序不用考點(diǎn)=■3如何獲取繪圖工具的句犧?解答:指見的繪圖工具上要仃畫第和畫刷.獲取繪圖工具的句柄就是獲取畫革和畫刷的句柄.有兩種方法能獲得畫筆句柄.(1)調(diào)用函數(shù)GeHUxikDbjeci獲得系統(tǒng)定義的四種畫第:WHITEPEN,BLACKPEN,DCPEN和NULL.PEN;(2)調(diào)用函數(shù)CreatePtm山用戶創(chuàng)建畫筆口G巳[StockObject和CreaiePen這兩個函數(shù)的返回值都是畫筆句柄口有三種方法獲得畫刷句柄:(1)調(diào)用函數(shù)GeiSLockObject獲得系統(tǒng)定義的七種畫刷;(2)調(diào)用Creat四WidBru由定義具有指定顏色的單色畫刷;(3)調(diào)用函數(shù)CreateHatchBrush定義具有指定陰影圖案和顏色的畫刷口上述這三個函數(shù)的返回值是畫刷句柄口(2)調(diào)用函數(shù)CreatePtm山用戶創(chuàng)建畫筆口GelStt>ckObjectWCreaiePen這兩個函數(shù)的返回值都是畫筆句柄口有三種方法獲得畫刷句柄:(1),調(diào)用函數(shù)GelSLockObject獲得系統(tǒng)定義的七種畫刷;(2)調(diào)用?四WidBru由定義具有指定顏色的單色畫刷;(3)調(diào)用函數(shù)CreateHatchBrush定義具有指定陰影圖案和顏色的畫刷口上述這三個函數(shù)的返回值是畫刷句柄。皿用如何定義映像模式?釁答:映像模式是被缶描述表的內(nèi)容之一,其優(yōu)點(diǎn)是程序員可以不必考慮嫡山改務(wù)的坐標(biāo)系情況,而在一個統(tǒng)一的設(shè)備坐標(biāo)系中完成圖形的繪制與操作,Windaw仃E種映像模式口其中MM-TEXT映像模式得到了普遍的應(yīng)用,是默認(rèn)的映像模式,其特點(diǎn)是登輯坐標(biāo)和物理坐標(biāo)都以像素為中位.MMISOTROPICMMANISOTROPIC兩種映像模式通過將圖形從程序員定義的邏輯設(shè)備窗口映像到物理設(shè)備的視I」以要現(xiàn)坐標(biāo)轉(zhuǎn)換「窗口是對應(yīng)邏輯坐標(biāo)系上程序員設(shè)定的一個區(qū)域,視U是對應(yīng)于實(shí)際輸出貨品
E程序員段定的一個區(qū)域n定義了窗口和視口后Windows系統(tǒng)即可按照窗口和視口的坐標(biāo)比例自動調(diào)整圖形」注意:MM-1&OTROPIC映像模式要求X和Y方向的映像比例相同,這種要求可能導(dǎo)致系統(tǒng)強(qiáng)制變換視口.應(yīng)用程序可以調(diào)用函敬CNMapMo也得到當(dāng)前系統(tǒng)的映像模式,?調(diào)用函數(shù)SelMap-VI。加設(shè)置系統(tǒng)定義灼8種映像模式■:然后可以調(diào)用函數(shù)&tWii】dnwENLEx設(shè)置窗口區(qū)域大小.調(diào)用函數(shù)SeEViewporLExihx設(shè)置視LI的大小,視I」和窗口的默?認(rèn)原點(diǎn)均為[0,0)口還“J以調(diào)用函數(shù)SetWindowOrgEx和函數(shù)SeiViewpurLOrgEK來設(shè)定窗l(fā)-l和視I1的原點(diǎn).注建量后這兩個函數(shù)另有在MMLSDTRDPIC利MMANIM)TROPK1這兩種模式下才有用,定義了映像模式后我們就可以在窗口上繪制相麻的圖形了口第五章文本的輸出方法與字體的設(shè)置占田如何找取字缽句柄?解答:可以通過兩種方法於得字體句柄;(1)選用系統(tǒng)提供的]種基本字體首先定義字體句輛變最BFHbOM-JtiH:然后調(diào)用函數(shù)hF=GetSi帆kObjecM…J獲得系統(tǒng)字體句柄:調(diào)用函數(shù)注1現(xiàn)田田帕1小業(yè),hF)將字體句柄選人設(shè)備環(huán)境。12)創(chuàng)建自定義字體系統(tǒng)提供的字體往往不能滿足同用程序的要求.實(shí)際卜中文的字體是很豐富的,目前40多種字體.程序晝可以調(diào)用函數(shù)Crw集Fsn創(chuàng)建力定義字體,并把返回值賦給一句柄變局a然后峋用函數(shù)比gbj小將創(chuàng)建的字體句柄選人設(shè)備環(huán)境.自3】如何創(chuàng)建向定義卞體?hP-CreateFun1ininHright1hP-CreateFun1ininHright1ininWidLh.inInKstapenitHlhinInOTienalioii.DWOKDnW由曲LDWCftTlDwlMtic,DWOKDd\Uriideiline,DWORDdwStrtLeoiit,DWORDciwCharsel,/字體而應(yīng),取0網(wǎng)采用系藐然認(rèn)值,使用邏輯單位“字體寬度.取。則由系統(tǒng)根據(jù)高寬比取最佳值,使用遇輯單位,,年行文宇相對于頁底的角度,以I,如之?度為單但3每個文字相對于頁底的角度1UI?丹之?庶為單位打字體粗驪度,取值范南為。-1麗n如果要靠字沐傾.斜.劃取北零〃如果要求下劃線,則取小零」/卯果要求刪除戡,則取??軍3字體所屬字符集口WORDdwOurputPrecisinn,,/輸出精度,一般取霖認(rèn)fSOUTDEFAULTPRECISDWORDLiwClippTeciJiion, k翦裁精度,一般取默認(rèn)值CLIPDEFAULTPRECISDWQRD出yQu點(diǎn)號, //輸出質(zhì)量,一般取默認(rèn)信口EFAULTQUALITYDWORDdwI^LchABdFamily,,,字體的鸞距及字體的系列,一般取默認(rèn)艇DEFAULTPITCHDWORDipsaFaceuiffne "字體農(nóng)其中hF是字體句柄。
RT】圳何設(shè)置字體的顏色和背景色?解答:在字體句柄被創(chuàng)建后,還可以設(shè)置字體的顏色和背景顏色,以兼得精美的輸出效果。應(yīng)用程序通過調(diào)用函數(shù)后安丁41亡0101(n明仃€。101)設(shè)置字體顏色,11出:是設(shè)備環(huán)境句柄/rCHor為設(shè)置的顏色°通過調(diào)用的數(shù)BetBkCaloNtide,心式田。門來設(shè)宜背景班色.64】文本是如何輸出的?解答;文本的輸出過程包括獲取字體信息、格式化文本.調(diào)用函數(shù)輸出文本等具體過程.(1)獲取字體信息府用程序在輸電文本之前必須獲取當(dāng)前使用字體的仃夫侑思,如當(dāng)時使川宇體的了符高度等,以確定文本格式和r一打字符的輸出位置.程序調(diào)用函數(shù)GetT"lMwM(hdc,也lm)來獲取字體信息,其中tm是包含字體信息的TEXTMETRICS結(jié)構(gòu)體變星,Q)格式化文本格式化文本分兩種情況,篇一種情況是硝定后續(xù)文本坐林,此時只要調(diào)用函數(shù)Get-TextEitenlPuinl32得到一個Chize結(jié)構(gòu)體變員,該變量包含字符寬度信息,通過計(jì)算得到下一個字符的X坐標(biāo).第二種情況是確定換行時的文本坐標(biāo),利用前面得到的字體佶總結(jié)構(gòu)體Lm和當(dāng)前行的Y坐標(biāo)計(jì)算F一行的Y型標(biāo)口(3)文本輸出常用的文本輸出函數(shù)1r『:TeKtOLit.DrawText和TabbtidTextOul等,K中以函教Te&lOut最常用,這三種方法的特點(diǎn)見表具體的函數(shù)形式見幫助文件「表5T=種文本輸出函數(shù)雨蟄TeilDui雨蟄TeilDuiDtjwTextJ'ijbbeJTextOut使用當(dāng)前選中的字體周顏色在指定的位置上繪制正文字符串在紿定的矩形內(nèi)根據(jù)指定的方法格式化文本在指定的位直上根據(jù)播定的方法喻出字符串第六章Windows應(yīng)用程序?qū)︽I盤鼠標(biāo)的響應(yīng)峪用應(yīng)用程序如何響附鍵指消息?解答;鍵盤作為輸入設(shè)備.是Witl鮑WS應(yīng)用程序中卜分重要的愉人手段。當(dāng)用戶按卜’或釋放一個鍵時,鍵就KEYBOARD.DRV中的演端中斷處理程序?qū)λ鲦I進(jìn)行編嶼,并調(diào)用Window孱的用戶模塊USER.EXE中的有關(guān)程序來產(chǎn)士健搬消息.戰(zhàn)終發(fā)送到眥用程序的消息隊(duì)列中去等待處理口鍵盤上的每一個控都有一個惟一對應(yīng)的標(biāo)審慎,稱為掃描碼v當(dāng)用戶按卜或在驛放某鍵時,都會產(chǎn)生這個與設(shè)務(wù)有關(guān)的掃描碼,設(shè)備在動程序椽取彼的掃描碼后"把它翻譯成為與設(shè)備無關(guān)的虛擬碼,這樣鍵獻(xiàn)的輸入就會產(chǎn)生一條消息、它包含仃掃描碼、虛報(bào)碼以及其他與i占施?行美的信息.設(shè)備馳動程序?qū)⑾l(fā)送到系統(tǒng)的消息隊(duì)列中,然后山WiMows將消息發(fā);送到相應(yīng)的線程消息隊(duì)列中。最后,山WndProc函數(shù)從港息隊(duì)列中取出隧盤消息.迸行必要的處理口酎2】應(yīng)用程序如何響應(yīng)鼠標(biāo)消息?解答:鼠標(biāo)作為一種定位輸入設(shè)有在Window,司融化編程中得到了廣泛的應(yīng)用,選過展標(biāo)的單上、雙擊和施放功能,用戶可以很容易地操作恭于WiM口,■圖形界兩場應(yīng)用程序.鼠標(biāo)曳動程序在后動wm加時裝入,W詁加川區(qū)操年系統(tǒng)通過副標(biāo)驅(qū)動程序能檢測出鼠標(biāo)是否存在:若鼠標(biāo)存在,則設(shè)備驅(qū)動程序就將檢測到任何鼠標(biāo)事件?;诋?dāng)在窗口內(nèi)打倒林事件發(fā)生時,窗口就接收到一個鼠標(biāo)事件(以消息的形式發(fā)送給應(yīng)用程序的窗口卜注意:能接受鼠林事件的窗口一定是活動窗「I或衿是具有輸入蓋點(diǎn)的窗IL鼠標(biāo)消息如表6T所不.表A+鼠標(biāo)的消息及其含義消息含義WNILBU1TONDOWN用戶區(qū)內(nèi)校卜鼠標(biāo)左健WMLBUTTONUP用戶區(qū)內(nèi)松開馥標(biāo)左鍵WM.LBUTTONDHLCLK■H門區(qū)內(nèi)雙擊鼠標(biāo)左錘WM一MBLTTONDOW>J用戶區(qū)內(nèi)按下鼠標(biāo)中懶WM.MBLTTONIIP用戶區(qū)內(nèi)松開鼠標(biāo)中鍵WM.1HBLTTONDBLCLK用戶區(qū)內(nèi)承卡鼠標(biāo)中錮WMREUTTOhTDOWN用戶區(qū)內(nèi)按下鼠標(biāo)右融WMREIITTOKUP用戶區(qū)內(nèi)松開熊標(biāo)右艘WM-RLLTTrONDaDCLK用戶區(qū)內(nèi)現(xiàn)市鼠標(biāo)石能wmlmbuttonmove用戶區(qū)內(nèi)移動鼠標(biāo)在鼠標(biāo)消息中,參數(shù)IParam包含了I禮標(biāo)的位置JParam的高位包含鼠標(biāo)的y坐標(biāo)JPtir&E的低位包含了鼠標(biāo)的K坐標(biāo);蓼數(shù)wParam包含"一個指示各種虛擬嗎狀態(tài)的以第七章 資源在Windows編程中的應(yīng)用。由 商述菜單貫源的創(chuàng)建,過程0解答:菜單是WinUsv*將形用戶界而中窗口的宣要蛆成部分,菜單可使用戶直觀地了解并方便地使用成用程序所提供的各項(xiàng)功能.創(chuàng)建菜單可以分為定義和加載兩個步驟.(I)定義菜單菜單■在資源文件中的定義形式為:柒平帝MENU1龐壩I菜單項(xiàng)列表菜單弟表示攏定的菜單,應(yīng)用程序通過菜單業(yè)加載指定菜單0MENU是關(guān)鍵字,用來表示賁源的性質(zhì)。菜單項(xiàng)是菜單的細(xì)成部分.可用POPUP和MENUITEM來定義菜單項(xiàng)1:其中POPUP定義彈出式菜單,MENUITEM用來定義F拉式菜單一二在堡源文件中定義了菜單資源后,還需要在頭文件中定義菜單項(xiàng)標(biāo)識聽時成的數(shù)位口(2)加載菜單加載菜單的方法行三種:①在窗口美中加載菜單wnJcla?&.IpszMeuuNiime-Ep^sMeiiLiNiinie;②在創(chuàng)建窗口時加載菜單苜先謖用LoadMenu加莪菜單,在CreateWindow函數(shù)中加入:CreaLelVinduwC…..… ..hMenu ):其中,是山函數(shù)LoadMe。山返回的菜單句柄》③動態(tài)加載菜息應(yīng)用程序調(diào)用函數(shù)Lu向Menu獲得萊單句柄后,可以調(diào)用函數(shù)SetMenu動態(tài)加載菜以631如何利用位陽資源?解答:位圖是一種數(shù)字化的圖形表示形式,是表示一個圖像目標(biāo)的一系列數(shù)據(jù).對于繪圖或圖片一類的位圖,數(shù)據(jù)顯一般較人,為了提高顯示刷新魅度,位圖操作須在內(nèi)存環(huán)境中進(jìn)行口位圖的操作包括定義、加囊、選入內(nèi)存設(shè)備環(huán)境和輸出.(1)定義位圖句柄定義位圖句柄的方式如F:HBTTMAP1曲itm叩;(2)加載位圖陶用函數(shù)hBitmap=LoadBilMap(…J加載位圖,獲得位圖的句柄■:(3)選入設(shè)務(wù)環(huán)境調(diào)用函數(shù)Cre讓CompaiibJeDCI句系統(tǒng)申請內(nèi)存設(shè)缶句柄,獲取了內(nèi)存設(shè)備句柄后,調(diào)用函數(shù)S■dObj班將位圖選入內(nèi)存設(shè)備環(huán)境口此時即可對其進(jìn)行編輯口W輸出位圖應(yīng)用程序調(diào)用函數(shù)BMElt將位圖從內(nèi)存設(shè)備環(huán)境中輸出到指定的設(shè)密上.V41如何應(yīng)用時說框資源?解答:M詔延是一個彈出式窗口.它一般用于程序需要用戶輸入或需要與用戶進(jìn)行交互活動的場合.對詁框中包含了眾期的控件如按鈕、滾動條、列表柩、編輯也等.對話推分為“模態(tài)對話框"產(chǎn)『模態(tài)對話框”兩類.如果一個程序包免停對話框,則根序必須也含行一個對詔框函數(shù)這個函數(shù)和窗I」消息處理函般類似,只不過窗I」函數(shù)用于處理與窗口有關(guān)的消息,而對拓框函數(shù)處理與對話柩有美的消息?!蹦B(tài)對祐框”的編程包括定義對話框赍源、顯示對話框}構(gòu)造對話框處理函數(shù)和關(guān)閉對話梅普.(1)定義對話柩創(chuàng)建對話框首先要在資源文件中定義對話框口一般形式為:對話框帝DIALOG1載入特牲選項(xiàng)]X,Y.W沁th」I嚏hE[設(shè)置選現(xiàn)對語框的控件定義;對話框的控件定義可以包括按鈕,嵬選框、組合框、列表框等常用的Windows控件口(2)顯示對話框在程序中的合適位置調(diào).用函數(shù)DialogBox來顯示對話程.(3)構(gòu)造對詁框消息處理函數(shù)對詔框消息效理函數(shù)的一般形式為BOOLCALLBACKDlgPruci...)swiLch(uies-滋igc)CitieWMINTTDIAI.GG:retuimi1;WM.COMMAND:hrwik;此消息處理函數(shù)的參數(shù)與土窗口處理函數(shù)出似.但對證?框處理函數(shù)的返回估:萬上窗n的處理函數(shù)不同,對諂?框消息處理函數(shù)返回BOOL值,而主窗II函數(shù)返回LRESULT的」對話框處理函數(shù)不處理某些消息圳WMPAINT、WMCREATE和WMDESTROY等;此外,對未定義的消息蝕理不同,主窗口函數(shù)通過調(diào)用DefWindow?rec隨致完成對未定義處理過程消息的處理,而對語框消息處理函數(shù)如果接收到未定義處理過理的消息,則返回FALSE(return0).(4)關(guān)團(tuán)對話框在村詁框消息處理函.數(shù)中的合適■位置調(diào)用函數(shù)EndDialog來關(guān)閉對,話框.“M模態(tài)對話框R的編程與*模態(tài)對環(huán)框”的編程類似,但在定義、創(chuàng)建及消息處理匕疔一些差別.定義的不同主要在設(shè)宜茂項(xiàng)上:“非模態(tài)對詁框小的樣式一般為:STYLEWS.POPUPIWSCAPT1ONIWSVISIBLE,注意樣式中一定要包含WSVIS1BLE,否期對話框不能顯示出來口要調(diào)用造數(shù)CmateDialo老來創(chuàng)建和顯示對話框,在主窗口消息處理程序中的消息能壞中必須包含酸獲發(fā)往",『模態(tài)對話框”的消息,并將H發(fā)送到相質(zhì)的消息處理函數(shù)中去處理的語句.如:whilc(GctMcfisagr(&ide^,NULL,0.0))if]!R/alogM已心邛巴(卜口1以&Esg)) F/此函數(shù)判斷消息是否發(fā)往對話框TT3ns.Isi1pMKFtjj:命rnkg]:DiNpa.ti:hVTcsnnge(&msg);二一,要—口與"模態(tài)對詔框“3小模態(tài)對詡框FJ何區(qū)別?在編卷匕仃何不問?解答:(i)建模態(tài)對話框”不允許用戶在關(guān)閉對話框之前切換到圖用程序的其他窗u非模忠對話框”允許用戶在該對話框與趣用程序之間來回切換.(刃“非-模態(tài)對話框”從WinMain函數(shù)的消息循環(huán)中接受輸入:■(3)在編程上「巾:.模態(tài)對話框〃在定義資源時,必須在設(shè)置選項(xiàng)中包含WSVISIBLE,否則不能顯示C{4}“模態(tài)對話機(jī)"諭用函數(shù)DialogBo^來顯示對話框,而‘非模態(tài)對話框”閾用函數(shù)CrealeOiakig來顯示片話相.行)"」1:模態(tài)對話植h需要在主陋數(shù)的消息循環(huán)中截次時詔框消息,但軟模態(tài)對話框”不需要口6”‘模態(tài)對話框”調(diào)用函數(shù)HndDi410g關(guān)閉對話框一 II:模態(tài)對話框”調(diào)用函數(shù)DesiruyWindnw來關(guān)閉對話框.U蜀I如何利用圖標(biāo)資源?解答:一個圖標(biāo)代表一個應(yīng)用程序的特殊最八位圖,當(dāng)在圖標(biāo)上雙占鼠標(biāo)左鍵就可以執(zhí)行該程序.圖標(biāo)的操作類似于前而淡到的位圖操作,也要經(jīng)歷圖標(biāo)的創(chuàng)建、在資源文件中的定義、圖標(biāo)的加曩等步驟.(1)圖標(biāo)的創(chuàng)建用戶可以利用Windows自定義的圖標(biāo),也可以通過圖形褊,輯器自定義圖標(biāo)鬻式)⑵在資源文件中自定義圖標(biāo)當(dāng)采用臼定義隹標(biāo)形式時,要在資源文科中加入如下代得:圈標(biāo)方TCON圈標(biāo)文件由(3)在應(yīng)用程序中加載圖標(biāo)應(yīng)用程序是通過調(diào)用函數(shù)Lmdk皿來進(jìn)行圖標(biāo)的加載的,此過程經(jīng)常在定義窗口類時進(jìn)行.形式為:wndcluss■hlcon=Loud1con{…);第八章MFC基礎(chǔ)知識9汨MFC類層次中主耍包含了哪些類?解答:MFC類層次中主要包含以下各類:⑴CDbjtxt類,它是MFC抽象城類,是MFC中多數(shù)類和白定義子類的根類,它為程序員提供了許多編程所需的公共操作.這些操作包括:對象的建立和刪除、小行化支持、對象診斷輸出、運(yùn)行時信息以及集合類的兼容等.(2)胸用程序體系結(jié)構(gòu)類:它能提供多數(shù),囹用程序公用的功能.雙用程序類主要包含了與命令相關(guān)的類、窗口應(yīng).用程序類,文告視類和線程基類等。(3)可視對象類,它主要包括:①CW期窗口類,流類提供了MFC中所有窗I」的基本功能,它是CCmdTarget類的基英;②CViev/視類?該類表示框架窗口的客戶區(qū)利顯示文檔數(shù)據(jù)并接受輸入的客尸區(qū);⑧CMenu菜單類,該類是C。用ect類的子類,用于管理菜單;④Cri^log對詔框類,該類從CWnd類中派生出來,對話框?子層次結(jié)構(gòu)包括通用對詁框類CDi仙嗚以及支持文件選擇、顏色選擇'字體選擇、打日L替擦文本的公共對話框類;⑤控件類,控件了層次結(jié)構(gòu)包拈若干類,使用這些美可以建在窗態(tài)文本、命令按鈕、位圖按鈕、列表框等;⑥€€。玳血山好控件條類,控件條子結(jié)構(gòu)為工具條、狀;占條.對環(huán)?茶和分割窗.I建立模型;⑦。。由0忻繪畫對象類,圖形繪畫對象子層次結(jié)構(gòu)以CGdiOhjeel類為根類,可以川于建立繪畫對象模型:如畫筆,畫刷、字體,,位圖、調(diào)色極等;@CDC設(shè)備描述表類,該類及其子類支持設(shè)備描述表對蕊,是CObjec1類的子類,(4)通用類,此分類中的類提供了很多通用臊務(wù)I例如文件fd診斷和異常處理等,包括CFile類和CAichive^^CException異常類、模板收集類等}(5)OLE美,對象連接與嵌入COLE)子層次結(jié)構(gòu)為支持OLE提供了9個類,分為3種:普通類、客尸類和服務(wù)器類0德)ODEC數(shù)據(jù)庫類,開放數(shù)據(jù)庫連接子層次結(jié)構(gòu)提供了一些類來支持ODEC的特征,即通過這陰類可開發(fā)數(shù)據(jù)庫愉用程序來訪時多個數(shù)據(jù)庫寬件.該層次結(jié)構(gòu)中主要包含CDaiaBiise類xCXecordSeL類^CRecordView類等「3”如可應(yīng)用應(yīng)用程序向?qū)??解答:Vkua1C++6。為了減輕程序員的T作果,特別增強(qiáng)了應(yīng)用程序的向?qū)Чδ茇螒?yīng)用程序向?qū)槌绦騿T提供了一個一基于MFC的應(yīng)用程序框架,程序員只要在此基礎(chǔ)上增加實(shí)現(xiàn)算定功能的代碼即可口一般通過以下步驟來實(shí)現(xiàn):在Ne曾對話框(如圖K-t中所示)中選擇MFCAppWizatd(七\(yùn)匕},在ProjectNa】ri七文本框中輸入新建的項(xiàng)E.I寓如MyPrujecj單擊0K按鈕。在彈出的MFCAppWizard-Slep1對話框(如圖8~2所示)中可以設(shè)置應(yīng)月程序的類型.指定附用程序的結(jié)構(gòu)是否采用文檔4見圖結(jié)用.以及資源文件所使用的語種等。應(yīng)用程序類型主要包括:單.文檔應(yīng)用程序,多文檔應(yīng)用程序,菸于對話框的應(yīng)用程序匚在再種列表框中一版選擇中文作為貨源文件的語種n單擊圖8省中的Meki按鈕,將?彈出MFCAppWizard^Siep2of6對話框(如圖8T所示》口在此對話框中設(shè)置應(yīng)用程序所使用的數(shù)據(jù)庫支持,它有四種選國,默認(rèn)值是None,智咯所有的數(shù)據(jù)庫支持.選擇應(yīng)用程序的數(shù)據(jù)庫支持后,單山網(wǎng)"1按鈕,彈出MFCAppWi53與lep3of6對記?框(如圖生4所e).在此轉(zhuǎn)詁框中可以設(shè)置應(yīng)用程序所支持的復(fù)合文梢類型。這一步使程序員可以向執(zhí)用程序加入OLE支持.設(shè)置完后,單擊N“l(fā)按鈕,將進(jìn)入MFCAppWiEard-Sicp4近一對話框:(如圖K5所示,在此可,以設(shè)置程序的外觀,如是否使用工具檔、是否有初始狀態(tài)造、是否使用3D控件等等.設(shè)置后單JfNsi按鈕,進(jìn)入MFCAppW抽rdStep5討6對話框(如圖#6所示)、在此可以將窗口兇格設(shè)置為標(biāo)準(zhǔn)風(fēng)格或Wind。雌8爾1口「鼓風(fēng)格,還可以設(shè)置是否在他用程序中生成代I碼注程,是以共享M念跳技庫還是以靜念盤按座的方式使用MFC庫等方式u段直完后,單山四殳1按鈕,世入MPCAppwizardStep6of6對證框(如圖X號所示).在此可以設(shè)置向?qū)傻奈募皖惷谠O(shè)置后,單」iFinish按鈕,彈出NewProjectInformation對詔框(如圖8~8所示在該對話框中列出了關(guān)于建立的境用程序項(xiàng)目文件的相關(guān)佶息.這樣應(yīng)用程序向?qū)墓ぷ骶腿客瓿闪?、向?qū)б呀?jīng)為用戶生成了一個可執(zhí)號的應(yīng)用程序框架aBa在應(yīng)用程序向?qū)е心軌騽?chuàng)建那些類型的文件?解答:VisualC++6。可以創(chuàng)建的文件類型如表XT所示口表R*VfaualC++6口川,以創(chuàng)建的文件類型文件類型?說明文件類型.說明ActrueServerPag已創(chuàng)建活動服務(wù)需BinaryFile市逐一進(jìn)捌文件BitinupFile創(chuàng)建位圖文件C4+SourceFile物桂J+源文件口C十十HeadeiFUt創(chuàng)建GC十十頭文件CurscuFiJt!和建光標(biāo)文件HTMLP岬創(chuàng)建HTML文件kuFile粗建圖標(biāo)五件
MiicruFileRsDuneTciuplayMiicruFileRsDuneTciuplayTextFile創(chuàng)建宏文件創(chuàng)建賈源模板文件創(chuàng)立文本文件RtNimrttScrip(
SQLScriptPile創(chuàng)建資源腳本文件創(chuàng)建呂QL腳本文件第九章Windows標(biāo)準(zhǔn)控件在可視化編程中的應(yīng)用②王常用控件仃哪些類型?解答;wmd#—提供了很多的控件,其中常用的控件主要包括:按鈕控件、滾動條控件、睜?wèi)B(tài)控件、列表柩控件、編輯框控件F組合框控件.控件為可視化編程提供了方便快捷的途徑?!騧】按鈕控件的特點(diǎn)是什么?解答:按鈕控件是WEdci科速用程序中最常用的控件之一,它的種類較多,功能豐富.如彳r普通按鈕”嚴(yán)單選按鈕”產(chǎn)復(fù)選按鈕”和“組合框按紀(jì)”等.“普通按鈕”上可以設(shè)置文本和加載位圖;“單選按鈕“具有互斥性,當(dāng)選中某一個選項(xiàng)時,其他的選項(xiàng)自動取消:“復(fù)選按鈕”可以允許用戶進(jìn)行多項(xiàng)選擇;組合框按鈕”是一種特殊的按鈕:既不處理鼠標(biāo)和健欲輸入,也不向其父窗口發(fā)送酒息,使用它主要是使界皿整齊.按鈕作為一種『窗口,可以具有一些窗口的樣式,另外還具有很多獨(dú)衿的樣式.縱目按鈕控秤是如何應(yīng)用的?解答:按鈕是一種「常有■用的控件,它具有若「?用途-對于接收來門用戶的命令或響應(yīng),一個F壓式按鈕是適當(dāng)?shù)倪x擇「若存在若干個互相排斥的數(shù)據(jù)項(xiàng),一組單選按鈕是能讓用戶選擇的方便的方法c如果若干個選項(xiàng)之間不互相排斥,一組復(fù)選框是比較好的選擇.若要創(chuàng)建一個框架,將苴他的控件包圍在其中,則常使用分組框.及/按鈕控件分為幾費(fèi)?解答:在Windows中主要仃四種按鈕:復(fù)選框(Checkb”5)、單選按鈕(Radidbul—2ns}、卜4];式按鈕(Pushbuitong)和,分組框fGixiupbux匕x)&占國各種按鈕控件的類是如何定義的?觥答tCBuLton類是CWnd類的派生類,它同時只侑類的一切功能.類中的函數(shù)按照功能分為3類:(I)創(chuàng)建和初始化函數(shù):構(gòu)造函數(shù)用來初始化CBuilon類對象;C比Me■在窗口的指定位置創(chuàng)建(Eulluri對象匕(2)常用的CButton對象方法:GeiStaie獲得一個按鈕控件的選中、起棒和聚焦?fàn)罱?;SMS堆場設(shè)置一個按鈕的選擇狀態(tài):GeiCheck得到一個按鈕的選邛狀態(tài):SeiCheck設(shè)置一個按鈕的選中狀態(tài);GEiButlonSlyle獲得一個按鈕的樣或;SelButtunSLyle設(shè)定一個按鈕的樣式;SctQilmap設(shè)定按鈕上.顯示的位圖;GciBilmap拄得按鈕上.顯示位圖的句柄等.□)析構(gòu)函數(shù)??偹灸男┌粹o控件需要初始化?解答:單選按鈕和復(fù)選框獴鈕需要初始化二炒為滾動條分為人樊?其類結(jié)構(gòu)是如何定義的?解答:滾動條分沙’垂直策動條”和“水平滾動條”兩種.滾動條類是CWnU類的派生關(guān),它同時遞承了CWnd的所有功能。類中定義的函數(shù)按照功能分為3類口)創(chuàng)建和初始化函數(shù):包括Cg亡ZlBar構(gòu)造函數(shù)1廠,至函數(shù)用十在窗口中創(chuàng)建一個糜動條:以)滾動條類方法函數(shù):主要包括設(shè)置滾動條滾動范圍的函數(shù)SelScrollRange,設(shè)置滑塊位置一的函數(shù)取IScrollPos,得到滑塊位酉的函數(shù)GctScrnl】Pm*,設(shè)理滾動條信息函|數(shù)AelScrollIn獲得滾動條信息函數(shù)GetScrol]Infu等;(3)析構(gòu)函數(shù)。期制I滾動條控件是如何進(jìn)行消息傳域的?解答:一個MFC程序需處理兩種靠自凌動條的消息,這些消息可以通理消息映像項(xiàng)卸消息處理程序來完成.表9T是兩個淮息映像項(xiàng).表9I消息映像用消息映像意 義OM.WMli^C?RU!.L雪水平滾動條位置變化時.水平溶動條發(fā)送就捎息ONWMV5CROLL曾垂百濠動泰位置變化時,垂百流動軍發(fā)送此消息看起來這個控科只仃恨少的消息.但實(shí)際上這兩個消息映像中也含了井南十富的信息.MFC通過兩個消息處理函數(shù)OnHScroll和OnVScron來處理這兩條消息,這兩個消息的原型聲明如下:afxmsgvoidOnHScr011(UINTnSECude,U1NTilPok,CbcrullEkir^pScTiillEur)afx..nri^voidOnVScroll(U'J'NTnSECcdejUINTnPus.CtcrollBtir*pScrtiUBitr)其中p£b"lllHr指針指向發(fā)送消息的漆動條控種,nWBCom指明了一個可能的潦動條代碼,也就是用戶對滾動條操作的類型(如表9千所示).參數(shù)rPgx只有當(dāng)通知代碼為SBTHIJMBPOS1T[()N和SBTHUMBTRACK時d?仃政,表示節(jié)前滑塊的位置.用戶只需根據(jù)系統(tǒng)傳遞進(jìn)來的消息來進(jìn)行相應(yīng)的處理即可口表9日滾動條的通知林用通扣代碼含 義SBBOTTOM用戶摟End疑廢動到最大值SBEhTiSCROLL用戶釋放一今鍵.發(fā)送,些虛鍵碼(WMKEYDOWN)滾動停止SBLINEDOWN向下滾一行SBLINEUP向上聚一,行SBLINELEFT向左淡一“行SBLINERIGHT向右生一行SBPAGEDOWN向卜滾一品SBPAGEUP向上贊一頁SBPAGELEFT向左逐一血SBPAGLRIGHT向右梁一MSBTHUMBPOSITION拖動到絕對位置SBTHIFMBTRACK拖動滑■塊到指世的位置SBTOP用戶段動Hume鍵,濠砌到最小值片/編輯框控件是如何使用的?解笞:在使用之前一定要創(chuàng)建堀相框控件,行兩種方法時以創(chuàng)建琉輯框控件:(1)利用VisualCh后jO向帶的資源編輯器,把編朝框控件放置在指定的對話框窗1-1的合適位國,然后利用CE.淖W也用M把這個編輯框控件和一個CEdit對,象聯(lián)系起來,(2)在程序U」定義一個CHdii對象.調(diào)用Create為編輯框控件設(shè)置參數(shù)和抨式來初始化CEUil對象.然后我們就可以調(diào)用各種編輯框方法來使用編輯框。常用的方法如h-:①心,”方浜將編輯框中的文本拷貝到剪貼板;②Cui方法將編輯框中的文本剪貼到剪貼板;③PHE化方法將剪貼板中的數(shù)據(jù)捕人到編輯推控件中光標(biāo)所在的位置上;@Clear方法刪除編輯框中當(dāng)前的選擇;⑤CauUinJu方法決定一人纏骨框操作是否可以撤銷;⑥Uh也方法取消編輯框中的晨后一次的操作]⑦S&WM在編輯框中設(shè)定選擇的范圍;@Replacescl方法用指定的文本來代替選中的文本;⑨柒131方法獲得編輯柩控件中當(dāng)前選擇的開始和結(jié)束.字符的位置.S>40]編輯框控件的類結(jié)狗是如何定義的?解答:MF「在美。肉1計(jì)中提供了標(biāo)加的WirNnw*編輯樞控件服務(wù),「Edt是PWnd類的宜接派生類,這就意味著它具有CWnd的所為.功能.CEW類的定義結(jié)構(gòu)很熨雜,我們可以把該類的函數(shù)按功能作如下劃分:(I)構(gòu)造函數(shù)①CEdii函數(shù)用來初始化CEdit對象;②Cmite函數(shù)用來在窗口的合適傳?置上建立編輯框控件。(2)通用cant類方法①CopyvGut.paste等剪貼板操作陶數(shù);②UmkxCMU詞口撤銷操作函數(shù);@SaS旬、Repla悅配1選擇和替換畫數(shù);④SclModify.SeiRtadOnty等設(shè)置編輯框狀態(tài)函數(shù):⑤GelSeLGetModily>GelPasordChar等從編輯柩中得到輸入和狀態(tài)的函數(shù)口(3)多行編輯植方法此類方法只適用于多行編窗框.包含強(qiáng)tLiti鼠GctLin匕CjutihLlhul44ex等函數(shù):因?yàn)镃FidLt類是C;Wnd類的森生英一所以它汪具有CWntl類的方法,例如SelWin-dowTextfGetWindowText等等;取土I】編輯框控件是如何響應(yīng)消息的?解答:因?yàn)镸FC把標(biāo)準(zhǔn)的Windup編輯消息抖裝入CEdit類方法中,--個MFC應(yīng)用程序通常只處理通知消息,一個編輯框控件向它的父窗口發(fā)送通知消息,球以通過對每條消息編寫消息映像和消息處理力.法的方式來獲得和處理這些消息.消息映像和消息處埋方法位編輯框控件的女窗口類中實(shí)現(xiàn).表顯示丁對處埋CEM通知自用的消息政懾項(xiàng)口表什3處理CEdii通知的消息腺像鞘息映像項(xiàng)含 義ON.ENCHANGE當(dāng)用戶款變了編輯柢控件中的文本時發(fā)送此消息,和ENUPDATE通知稍息不1%詼遙知消息是在W詁d口WK更新里示之后發(fā)出的.ON-EN-ERRSPACE當(dāng)編輯框控件不能辦理足夠內(nèi)存滿足指定文本要求時發(fā)送此捎息.,ONEN.IISCROLL篝用戶按動編輯他的州平滾動條時發(fā)送此消息.父窗口在群幕史新前獲得
此將息「ONENRTLLFOCITSON.EN,MAXTEXTONENSETFOCUSOWENUPDATE。汽ENVSCROLL當(dāng)編輯框控件失去輸ONENRTLLFOCITSON.EN,MAXTEXTONENSETFOCUSOWENUPDATE。汽ENVSCROLL日編輯框輸入字符數(shù)超過指定數(shù)日時發(fā)送此港息.并且文本被截去尼部多汆部分匚“一編輯樞控件沒白明AUTOHSCRQLL樣式血情人字符數(shù)超11輸指框控件的寬度,成力當(dāng)堀娟恒陵有ESALPVSCKULL樣式而輸入總行數(shù)通過編輯控件的高度時也發(fā)璃此消息.當(dāng)堀輯框接殳輸入焦點(diǎn)時發(fā):送此潸思,T編輯框控件修改的文本被重新格式化但帶未顯示時發(fā)送此消息.用戶按動褊料椎控件的垂直波動條時發(fā)送此消息,父窗口在.屏幕更斷前獲得此消息,第十章在MFC中創(chuàng)建應(yīng)用程序的資源□(HJ菜單類的結(jié)構(gòu)是如何定義的?解答:菜單類(CMbhu)是從類亡ObjeclF派生的,按照功能可■以將它分為以卜一幾個部分:(i)CMenu類特征鼠這包含了菜單句柄變量mhMenu,它代表了創(chuàng)建菜單的句柄,還有一個獲得菜單旬柄的函數(shù)GedafeHni巳nil,一個操作符HMENU:(2)構(gòu)造國數(shù)此處包含了制建菜單函數(shù)CreawM己iiu、制建彈出菜單函數(shù)CreaLiPLjpupMEmi、加載菜單函數(shù)LoadMenu等;(3)菜單操作包含了刪除菜單De蹌出Menu函數(shù)、創(chuàng)建快捷菜單函【數(shù)TtackPopupMeti□等;(4)菜單項(xiàng)操作函數(shù)主要乜含了添加菜單項(xiàng)函數(shù)AppeiMMaiu、插入菜單以函數(shù)]nserLMaflLi>修改菜單項(xiàng)函數(shù)MndNyMtinu、刪除菜單項(xiàng)函數(shù)僮已由廿七卜0】"、使菜單項(xiàng)有效和無效的函數(shù)EnttHMMcnullCE、設(shè)置和取消選中標(biāo)志的函數(shù)CheckMenuLem、得至U指向子菜單句柄的函數(shù)GelSubMenu'得到指向子菜單1D號的函數(shù)GelM巳imltEmJD等;(5)析樹函數(shù)折物函數(shù)是構(gòu)通函數(shù)的逆操作.[10^1如何給菜單連接一個類?解答:當(dāng)我HI創(chuàng)建和編輯完菜單后,應(yīng)該給菜單連接一個類,因?yàn)椴藛螌?shí)際上是一個對縹,是窗口或?qū)υ捒虻囊粋€資源,它將調(diào)用窗口或?qū)υ捒蛑械囊恍┏蓡T函數(shù)和成員變:最,所以由該把它連接卜.一個婁,使它成為該派生窗口類或派生對話框類中的一個成員變量.創(chuàng)建和編輯完菜單后,在菜單上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選中口需.WiiaTd命令.在顯示窗門的同時,顯示用一個對話框,該對M標(biāo)詢向是增加一個新類還是選擇一個口存在的類進(jìn)行連接;,如果對話框類或窗口類已經(jīng)存在,選中Selectanexisting/酩選項(xiàng)口單出OK鋌后,在SelcxlClass對話框中選擇要連接的類即可.口。3】工具條類的結(jié)構(gòu)是如何定義的?裨答:丁具條類的基類為CCnnlrNBaj而該基類是山CWnil美派生的.山于所有的控制條都是山CWntl我派生的.所有的控制條部連接到一個WindowsAPJ窗口口因此,CWnd的所有功能加創(chuàng)建、移動、顯示和隱藏窗口等在用控制條工作時都是可用的「
CToHBai■類提供了許多工具條的處理方法,這些方法分別是構(gòu)造方法、工具條按鈕的操作方法和樵視方法..(1)構(gòu)造方法:構(gòu)造方,法用來建立Wmdtws工具條CToulBar對象并在運(yùn)行時將它們附加到框架窗口上(見表1MK表104CTwiiBar的兩造方法方法-睨 明Create0期建一個工具條并把它掰加到CTglDm對象上Cre.at&Ex()創(chuàng)建一個定義丁辿界的丁一具條井杷它附加到匚代加對象上設(shè)置按鈕及位圖大小SctHeightQ設(shè)置工具條的高度裝裝T具條變源LoadBitrnapO裝載包含P具按密圖像■的位圖客巴tBiEm叩。設(shè)置包圈圖像SetButtonsO設(shè)置按和并使每?個盤包與位鴨性1像相關(guān)(2)工具條按鈕的操作方法:工具條按鈕的操作方法是用來處理某一工具條按鈕的這些方法具體說明加表1。省所示口a10-2工具條按鈕的操作方法方法說 明CornmandTultdex()返回鰭定命令的工具條按鈕索弓iCistlterrilDO返回指定索引的按鈕或分編符的1DG巴返|口.|指是索羽的按鈕的顯示區(qū)域GstButtonSiyle()獲得按鈕風(fēng)格SuiButtDnSlyijf)設(shè)置按鈕風(fēng)格GelBuLtunInrc()獲得按鈕14風(fēng)格、圖像號SetBuTtoElntc(j設(shè)置按鈕1口、風(fēng)格、闋像號GetButton }蓑得顯示在按鈕上的文本SetButtmiTej(t()設(shè)置顯示在按鈕上的文本另外CToolBar類中還包含了一些成員變量:如msiaeltna^e代表了位怪的尺寸;情舒優(yōu)ButBri代表了當(dāng)前按鈕的尺寸等。此外還有虛擬方法,虛擬方法讀者迎以從工具條撰結(jié)構(gòu)中得到,在此不再贅述口104】工具條需要哪些賈源?解答:工具條中包含了工具欄資源,工具欄資源又包含了加在工具欄上面的按鈕資源和位圖資源。a仙何改變工具條的停靠風(fēng)格?解答:荏默認(rèn)狀況卜,一個CToo出射工具條只能被應(yīng)用程序所移動.但也可以使用戶能夠?qū)⒐ぞ邨l移到框架窗口的為一部分0為此I需向工具條及框架窗口發(fā)送消息口這可通過耐用CTnolBar::Hnahl已Docking和CFrame::Enab1eDi)cking實(shí)現(xiàn)「?曲數(shù)原型均如穆vuidEiabIcDockin^(DORDdwSlyle);其中參數(shù)dwe為T具條風(fēng)格,對于CTaolBar,其取值期表10T所示。表lft-3CTuolBar的風(fēng)格恢格意 義說明
CBRSALIGNBOTTOMCBRS從LIGMRIGHTCBRSALIGNANYCBRSFLOATMULTIT具茶可在客門區(qū)項(xiàng)潮稷動工具條可在客戶區(qū)底端移動工具條打在客戶區(qū)左端移動工具茶可在客月區(qū)右端移動工具條可在客戶區(qū)任意位置移動CBFSALIGNTOPCBRSALIGNLEFT允許在一窗口內(nèi)存在學(xué)干叮樽動抻混條對于CFraine不可用CBRSALIGNBOTTOMCBRS從LIGMRIGHTCBRSALIGNANYCBRSFLOATMULTIT具茶可在客門區(qū)項(xiàng)潮稷動工具條可在客戶區(qū)底端移動工具條打在客戶區(qū)左端移動工具茶可在客月區(qū)右端移動工具條可在客戶區(qū)任意位置移動CBFSALIGNTOPCBRSALIGNLEFT允許在一窗口內(nèi)存在學(xué)干叮樽動抻混條對于CFraine不可用第十一章單文檔與多文檔打叼文檔類的轉(zhuǎn)構(gòu)是如何定義的?解答:所有的文檔類都以(?43n1門讓類為其某類.enl類攝供了文檔類所需要的最基本的功能實(shí)現(xiàn).它提供的方法主要有一般方法和虛擬方法.表11T是CDncdinefti的一般方法自表111CDoirimkcftt的一股方浸GotTitle()SeiTiJe()GklPilhXame()SclPwtbNiimH)GeiDocTempiiiteQAddVkw()ReiniiveVieu?()UpdaizeAIIViewsl)r>EhC(>iiiieelCDncdinefti的一般方法自表111CDoirimkcftt的一股方浸GotTitle()SeiTiJe()GklPilhXame()SclPwtbNiimH)GeiDocTempiiiteQAddVkw()ReiniiveVieu?()UpdaizeAIIViewsl)r>EhC(>iiiieelV定調(diào))GetFile0茨得文檔標(biāo)題■他置文料標(biāo)度獲得文檔數(shù)據(jù)文件的潞林字符串設(shè)置文檔數(shù)據(jù)文件的路在字符串獲得指向描述女網(wǎng)類型的文檔嚏梭的指針向與文檔相笊聯(lián)的祝圖列表福加指定的視圖從文科視囹列定中期除視圖通知所有視圖,文棧已被修以,,它們應(yīng)該重而使文佇勺視圖相分離出導(dǎo)指出CFi加類型的揩針表11TCUMUIiHMt的虛擬方法OnNewL>)cuinent()OnOpcuDociiiiienl(1OnSaveDocument()011(1JctSiclJocuTTHiT11()CunC1ojjeFrlime()DclcLeCDnirnlii()KeleaseFiht)SaveMt)diJ'ietl()IsM(?dificd()SeiMcdifiedFJ^OGetHrsrVie\vPqsitinnUGetMeKtViewf)由MFC調(diào)用來建立文檔由MFC詡用來打開文檔由MFC調(diào)OnNewL>)cuinent()OnOpcuDociiiiienl(1OnSaveDocument()011(1JctSiclJocuTTHiT11()CunC1ojjeFrlime()DclcLeCDnirnlii()KeleaseFiht)SaveMt)diJ'ietl()IsM(?dificd()SeiMcdifiedFJ^OGetHrsrVie\vPqsitinnUGetMeKtViewf)口1孑】CDocumenl類的派生類的構(gòu)造步驟是如何進(jìn)行的T解答:一股來說,從口1孑】CDocumenl類的派生類的構(gòu)造步驟是如何進(jìn)行的T解答:一股來說,從CDncumtnt類派生自己的史梢類所需的典型.步驟為:(])為每一"t文檔類型從Cl?ocuiTien[類]當(dāng)然也可以總尺他CDocunienl類的派生類)派生一個相應(yīng)的文檔類。(2)為文檔類濡加成員變量.這些成員變量用來保存文檔的數(shù)據(jù),其他對象(如與文襠相美聯(lián)的視圖)在接或向接地訪問這些成員變量來讀取或更新文檔的數(shù)據(jù).(31里載Seriiih2e成員函數(shù),實(shí)現(xiàn)文檔數(shù)據(jù)的串行化0山用文檔模板類的結(jié)構(gòu)是如何定義的?解答:文檔模板類口口“口叫>山彼類是從CCindTiirg就類卜派生的,CDgTemphik類提供了文檔模板類所需要的最基本的功能實(shí)現(xiàn).它提供的方法分別是一般方法和虛擬方法(■如表11T所示兀方法GctDucSirinL方法GctDucSirinLoadTsnipInte()Ad([IJ?ciiTnenl()ReTnoveD[)cuinent(>GelFirsiDocPi)siLion()GetNctKtDci儀)CreateNewDucinnent()L'esiLeNt;wHritm已()OpenDiTciimeTitFilei}CjuseAllDucLinjenlOSetDcfmiltTiLIe()SaveAHMixh)說明獲得號文檔相關(guān)的字符串加載指定的模板給文鞘模板康加指建的模板從文檔模楨列表中刪除文檔獲得吁文檔模板相美的第?個文樣的位置獲得文檔及下一個文檔建立文首建立包含文檔周視圖的框架窗口打開由路程帝指定的文檔美閑所有文檔見示文梢窗口的標(biāo)題欄中默認(rèn)的標(biāo)題查詢文檔模板的修改狀態(tài)并存悌?之關(guān)聯(lián)的所有文檔在VC++6力中,文檔類,與文檔類相關(guān)聯(lián)的視圖類以及為視圖類梃供顯示的框架窗口都是由文檔模板創(chuàng)建的’每一種文檔類型都有一種文檔模板與之相對燉,文襠模板負(fù)貢創(chuàng)建和管理該文檔類型的所有文檔.文檔、桃圖利框架二者之間的軼系是通過文檔模板的構(gòu)造函數(shù)來實(shí)現(xiàn)的口BW1視圖類的結(jié)構(gòu)是如何定義的1解答:「言"斐是從CWnd集卜-派士的JI1于肝有的從「V淪w英派牛的婁也都是由CWrul類間接派生的,所有的這些類都具仃CWnd的所有功能,如創(chuàng)建、移動、顯本和隱藏窗口,因此CView類可以接收任何Wi力必ws消息.CView類提供了爻檔類所需要的最慕本的功能實(shí)現(xiàn).它提供的方法分別是一股方法和虛擬方法.(1)一般方法:一般方法如表所示口表11TCVfeH類的一股方法方法說 明GelDvuument()獲得指向與視圖赳關(guān)聯(lián)的文檔的指計(jì)DoPrcpar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 信息檢索語言與技巧考核試卷
- 化工生產(chǎn)過程中的能量集成考核試卷
- 小學(xué)生音樂律動課件視頻
- 辦公文具創(chuàng)新設(shè)計(jì)理念與實(shí)踐考核試卷
- 城市綠化管理的城市設(shè)計(jì)與城市規(guī)劃考核試卷
- 秋季安全宣傳課件圖片
- 門市倉庫出租合同范本
- 醫(yī)藥器械采購合同范本
- 種植基地配送合同范本
- 酒店客房預(yù)訂操作規(guī)范及流程制度
- JJF 1341-2012 鋼筋銹蝕測量儀校準(zhǔn)規(guī)范-(高清現(xiàn)行)
- 換班申請表(標(biāo)準(zhǔn)模版)
- 偏癱臨床路徑流程
- 者陰村戰(zhàn)友紀(jì)念者陰山對越自衛(wèi)還擊作戰(zhàn)30周年聯(lián)誼會計(jì)劃2
- GB-T 9251-2022 氣瓶水壓試驗(yàn)方法(高清版)
- 基于單片機(jī)的電子廣告牌設(shè)計(jì)畢業(yè)設(shè)計(jì)論文
- 承插型盤扣式支模架專項(xiàng)施工方案
- 我國古代職業(yè)教育的發(fā)展
- 通用橫版企業(yè)報(bào)價(jià)單模板
- 中國移動B-BOSS系統(tǒng)總體結(jié)構(gòu)
- 船舶目標(biāo)成本-造船成本核算方法(共9頁)
評論
0/150
提交評論