習(xí)題2 - 吉林大學(xué)繼續(xù)教育學(xué)院(網(wǎng)絡(luò)教育學(xué)院 培訓(xùn)學(xué)院)、在線(xiàn)看_第1頁(yè)
習(xí)題2 - 吉林大學(xué)繼續(xù)教育學(xué)院(網(wǎng)絡(luò)教育學(xué)院 培訓(xùn)學(xué)院)、在線(xiàn)看_第2頁(yè)
習(xí)題2 - 吉林大學(xué)繼續(xù)教育學(xué)院(網(wǎng)絡(luò)教育學(xué)院 培訓(xùn)學(xué)院)、在線(xiàn)看_第3頁(yè)
習(xí)題2 - 吉林大學(xué)繼續(xù)教育學(xué)院(網(wǎng)絡(luò)教育學(xué)院 培訓(xùn)學(xué)院)、在線(xiàn)看_第4頁(yè)
習(xí)題2 - 吉林大學(xué)繼續(xù)教育學(xué)院(網(wǎng)絡(luò)教育學(xué)院 培訓(xùn)學(xué)院)、在線(xiàn)看_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

吉林大學(xué)遠(yuǎn)程教育課件Windows

A

P

I編

程主講人:

翟慧杰學(xué)

時(shí):48習(xí)題2八、子窗體控件:圖形界面和消息處理是任何一個(gè)基于Windows的應(yīng)用程序必須認(rèn)真考慮的事情。在前面的章節(jié)中已經(jīng)介紹了Windows應(yīng)用程序消息處理的機(jī)制,這種機(jī)制對(duì)于所有對(duì)象的消息處理都是一致的,即實(shí)行客戶(hù)(用戶(hù)操作或請(qǐng)求)到操作系統(tǒng)(捕獲消息)到應(yīng)用程序(接收消息并執(zhí)行處理代碼)的機(jī)制。而圖形界面則包含豐富的內(nèi)容,主要是指各種各樣的控件,不僅包括前面章節(jié)中介紹的主窗口,還包括按鈕、編輯框、滾動(dòng)條等具有窗口風(fēng)格的子窗口。豐富的圖形界面元素為建立界面友好的應(yīng)用程序提供了可能,而完整的消息處理機(jī)制則為應(yīng)用程序的功能提供了高效集成的保證。子窗口的概念包含兩方面的含義:從創(chuàng)建子窗口的過(guò)程來(lái)看,

Createwindow函數(shù)為創(chuàng)建各類(lèi)窗口提供了統(tǒng)一的函數(shù),并且子窗口的類(lèi)型唯一由第一個(gè)參數(shù)確定;從窗口的界面風(fēng)格來(lái)看,這些子窗口都擁有窗口的許多性質(zhì)。設(shè)計(jì)含有子窗口的程序都從調(diào)用函數(shù)CreateWindow開(kāi)始,它一共有11個(gè)參數(shù),指定待創(chuàng)建的子窗口的類(lèi)型、標(biāo)題、風(fēng)格等非常重要的性質(zhì)。CreateWindow函數(shù)的原型定義如下:HWND

CreateWindow(LPCTSTR

lpClassName,//指定子窗口的類(lèi)名LPCTSTR

lPWindowName,//指定窗口名稱(chēng)DWORD

dwSty1e,

//指定窗口風(fēng)格int

x,int

y,//指定窗口左上角頂點(diǎn)的水平坐標(biāo)//指定窗口左上角頂點(diǎn)的垂直坐標(biāo)int

nWidth,//指定窗口寬度int

nHeight,//指定窗口高度HWND

hWndParent,//父窗口句柄,允許為NULLHMENU

hMenu,//窗口的菜單句柄或者是子窗口自己的標(biāo)識(shí)符HANDLE

hInstance,//應(yīng)用程序句柄,可以為NULLLPVOID

lpParam //指向lParam數(shù)值的指針);當(dāng)子窗口創(chuàng)建成功后,返回子窗口的句柄,

否則返回NULL。在11個(gè)參數(shù)中l(wèi)pClassName、

dwStyle和hMenu是三個(gè)最重要的參數(shù)。下面分別講述它們的意義。lpClassName指定子窗口的類(lèi)名,它們的取值可以是如表所示的值。子窗口類(lèi)型描述dwStyle指定子窗口的風(fēng)格。這里只講述一般窗口的風(fēng)格,表所列的子窗口的風(fēng)格在后面內(nèi)容中分別講述。一般窗口的風(fēng)格取值如表所示。參數(shù)hMenu指定菜單句柄或者子窗口的標(biāo)識(shí)符。例如,已建立的菜單資源標(biāo)識(shí)符為IDM_MENU,窗口需要加載該菜單,則

hMenu參數(shù)可為IDM_NENU子窗口的標(biāo)識(shí)符可以是字符或者數(shù)

字,但同一個(gè)應(yīng)用程序中不同子窗口的標(biāo)識(shí)符必須相異,并且前面加上(hMENU)來(lái)滿(mǎn)足參數(shù)類(lèi)型兼容的要求。應(yīng)用程序運(yùn)行后,首先創(chuàng)建主窗口,并發(fā)送WM_CREATE消息,由于在該消息的處理代碼中含有創(chuàng)建子窗口的代碼,于是就創(chuàng)建了子窗口。當(dāng)子窗口的WS_VISIBLE風(fēng)格指定后,子窗口就顯示出來(lái)。同前所講的消息處理機(jī)制類(lèi)似,子窗口的

消息也主要依靠參數(shù)lParam和wParam來(lái)完成。應(yīng)用程序創(chuàng)建子窗口后,在主窗口的消息處理函數(shù)中一般使用

SendMessase向子窗口發(fā)送消息。當(dāng)用戶(hù)對(duì)子窗口進(jìn)行某種操作后,將向父窗口發(fā)送WM_COMMAND類(lèi)型的通知消息。其中,

lParam包含子窗口的句柄;wParam參數(shù)的高位字節(jié)為通知代碼,低位子代表子窗口的標(biāo)識(shí)符。下面將分別講述各種子窗口的特有風(fēng)格以及消息循環(huán),并結(jié)合實(shí)例介紹子窗口的應(yīng)用。一、Button子窗口Button(按鈕)是Windows子窗口的最

常用的元素之一。例如安裝程序中選擇Next或者Back按鈕。1.按鈕類(lèi)型依據(jù)操作的類(lèi)型可以把按鈕分為按鍵按鈕、單選按鈕、復(fù)選按鈕,另外還有存放單選按鈕和復(fù)選按鈕的按鈕組合框(GroupBox)。按鍵按鈕一般執(zhí)行某項(xiàng)功能,例如彈出新的窗口。在創(chuàng)建子窗口的函數(shù)中,如果需要?jiǎng)?chuàng)建按鍵按鈕,則dwStyle參數(shù)指定為

BS_PUSHBUTTON。當(dāng)某些選擇相互排斥時(shí),需要用到單選按鈕,例如字體或者顏色。單選按鈕的左端為一個(gè)圓圈,選中單選按鈕,則顯示實(shí)心,相反為空心圓。在同一個(gè)按鈕組合框里的眾多單選按鈕中,用戶(hù)只能選擇一個(gè)。如果需要單選按鈕,則dwStyle參數(shù)必須指定為BS_RADIOBUTTON。當(dāng)某些選擇可以相互并存時(shí),需要用到復(fù)選按鈕。復(fù)選按鈕的風(fēng)格與單選按鈕類(lèi)似,左端為圓圈或者小空心正方形。在同一個(gè)按鈕組合框里的復(fù)選按鈕可以同時(shí)被選中幾個(gè)。如果需要?jiǎng)?chuàng)建,則dwStyle參數(shù)設(shè)置為BS_CHECKBOX。在復(fù)選按鈕中還有一類(lèi)特殊的按鈕,即三態(tài)按鈕。顧名思義,三態(tài)按鈕允許有三種狀態(tài):選中(Selected)、本選中(

Unselected)、顯灰(Grayed)。三態(tài)按鈕在需要把單選按鈕和復(fù)選按鈕放在同一個(gè)組合框里時(shí)才有應(yīng)用的價(jià)值,若要?jiǎng)?chuàng)建三態(tài)

按鈕,則把dwStyle參數(shù)設(shè)置為BS_3STATE。按鈕的風(fēng)格取值如表所示。按鈕有自己特殊的消息類(lèi)型。當(dāng)用戶(hù)選擇了按鈕時(shí),它將向父窗口發(fā)送WM_COMMAND消息,這些通知消息包含在wParam的高位字節(jié)中。按鈕的通知代碼如表所示。二、編輯框編輯框的主要作用是讓用戶(hù)輸入文本,例如要求用戶(hù)在編輯框中輸入密碼的文本。1.基礎(chǔ)知識(shí)編輯框里的文本可以是單行,也可以是多行,后者的風(fēng)格取值為

ES_MULTILINE。一般對(duì)于多行文本編輯框還需設(shè)置

ES_AUTOVSCROLL,這樣用戶(hù)可以輸入多行文本,并自動(dòng)滾動(dòng)。在默認(rèn)的狀況下,編輯框是沒(méi)有邊框的,如果需要邊框,設(shè)置WS_BORDER即可。另外還可規(guī)定編輯框里的文本是否只讀,風(fēng)格屬性設(shè)置為ES_READONLY。當(dāng)需要建立密碼編輯框時(shí),只要設(shè)置ES_PASSWORD風(fēng)格屬性即可。編輯框的全部風(fēng)格如表所示。Windows系統(tǒng)把編輯框的操作以

WM_COMMAND的形式發(fā)送給父窗口消息的有關(guān)信息仍然包含在參數(shù)wParam和IParam中。wParam的低位字節(jié)包含編輯框的標(biāo)識(shí)符,高位字節(jié)包含通知消息的類(lèi)型,lParam包含編輯框的句柄。編輯框的通知消息如表所示。編輯框的通知消息類(lèi)型在默認(rèn)的情況下,當(dāng)用戶(hù)用鼠標(biāo)右擊后自動(dòng)彈出菜單,形式如圖所示。編輯框的彈出式菜列表框:列表框允許用戶(hù)從多個(gè)對(duì)象中選擇一項(xiàng)或多項(xiàng),這些對(duì)象可以是文本、文件和位圖等。當(dāng)列表框的項(xiàng)不能全部顯示出來(lái)時(shí),可以用滾動(dòng)條來(lái)滾動(dòng)顯示。1基礎(chǔ)知識(shí)默認(rèn)的列表框只允許用戶(hù)單選,需要多選時(shí),須把列表框的風(fēng)格定義為L(zhǎng)BS_

MULTIPLESEL和LBS_EXTENDEDSEL。列表框提供的其他風(fēng)格取值可以控制列表框的外觀(guān)和操作。例如是否按照列表框各項(xiàng)的名稱(chēng)排序,是否多行排列,是否有滾動(dòng)條等。當(dāng)用戶(hù)對(duì)列表框進(jìn)行了操作時(shí),就會(huì)向主窗口發(fā)送一條消息。列表框的消息類(lèi)型比較簡(jiǎn)單,主要是單擊、雙擊和選擇等。同

編輯框一樣,列表框也會(huì)遇到內(nèi)存不夠的問(wèn)題,所以消息類(lèi)型

中含有這一項(xiàng)。消息總是通過(guò)WM_COMMAND的形式發(fā)送給主窗口的。其中,wParam的低位字節(jié)表示列表框的標(biāo)識(shí)符,高位字節(jié)表示消息的類(lèi)型,lParam表示主窗口句柄。列表框的消息類(lèi)型如表所示。列表框也是通過(guò)調(diào)用函數(shù)CreateWindow來(lái)創(chuàng)建的,第一參數(shù)設(shè)置為L(zhǎng)istBox即可。風(fēng)格取值可以取表所示的值。在主窗口里的消息一般是在WM_

COMMAND里處理表中以L(fǎng)BN開(kāi)頭的消息。下面以一個(gè)具體的例子介紹列表框的常見(jiàn)操作。組合框:組合框兼具編輯框和列表框的功能,既能編輯選項(xiàng),又能顯示多個(gè)項(xiàng)。在Windows程序設(shè)計(jì)中可以見(jiàn)到大量組合框的應(yīng)用實(shí)例,例如文件對(duì)話(huà)框里的目錄搜索組合框?;A(chǔ)知識(shí):組合框的風(fēng)格主要有三種,分別是簡(jiǎn)單組合框(Simple ComboBox)、下拉式組合框(DropDown

ComboBox)和下拉式列表框(

DropDown

ListBox)。下拉式列表框和下拉式組合框平時(shí)只顯示編輯區(qū)域,只在打開(kāi)時(shí)才顯示組合框的各項(xiàng),這樣有利于節(jié)省屏幕空間。這三種組合框的基本功能如表所示。滾動(dòng)條:滾動(dòng)條既可以是許多子窗口(如編輯框、列表框)的附件,又可以獨(dú)立成為子窗口。滾動(dòng)條的主要用途在于對(duì)某個(gè)在一定范圍內(nèi)變化的屬性值或者變量進(jìn)行動(dòng)態(tài)設(shè)置。例如用滾動(dòng)條可以方便地控制顏色的深淺,設(shè)置線(xiàn)條的寬度;滾動(dòng)條也用來(lái)顯示某個(gè)任務(wù)的進(jìn)度,這樣滾動(dòng)條又被稱(chēng)為進(jìn)度條。滾動(dòng)條有一些重要的函數(shù)和方法,下面分別介紹。用來(lái)設(shè)置滾動(dòng)條類(lèi)型和活動(dòng)狀態(tài)的函數(shù)是EnableScrollBar,其原型定義如下:BOOL

EnableScrollBar(HWND

hwnd//指向父窗口或者滾動(dòng)條的句柄UINT

wSBflags,//標(biāo)志滾動(dòng)條的類(lèi)型UINT

wArrows//滾動(dòng)條的滾動(dòng)按鈕設(shè)置);wSBflag用來(lái)設(shè)置滾動(dòng)條的類(lèi)型,可以取表所示的任意值。顯示或隱藏滾動(dòng)條的函數(shù)是ShowScrollBar,其原型定義如下:BOOL

ShowScrollBar(HWND

hwnd,//指向父窗日的句柄int

wBar,//滾動(dòng)條活動(dòng)狀態(tài)的標(biāo)志BOOL

bShow//滾動(dòng)條是否可見(jiàn),當(dāng)為T(mén)RUE時(shí)可見(jiàn),相反則隱藏);九、對(duì)話(huà)框:在Miscrosoft

Windows中,對(duì)話(huà)框就是應(yīng)用程序創(chuàng)建的用于獲取用戶(hù)輸入的一個(gè)臨時(shí)窗口。應(yīng)用程序一般用對(duì)話(huà)框來(lái)提示用戶(hù)輸入命令的附加信息。對(duì)話(huà)框通常都含有一個(gè)或多個(gè)用戶(hù)可以輸入文本、選擇可選擇項(xiàng)或者指導(dǎo)命令操作的控件。Windows提供了許多函數(shù)、消息和預(yù)定義的控件,用于幫助創(chuàng)建和管理對(duì)話(huà)框。這樣,開(kāi)發(fā)應(yīng)用程序用戶(hù)接口就變得更容易了。Windows還提供了許多支持諸如File

Open和File

Print等命令的預(yù)定義對(duì)話(huà)框(也稱(chēng)為“公共”對(duì)話(huà)框)。不管執(zhí)行命令

的是什么類(lèi)型的應(yīng)用程序,使用這些命令的應(yīng)用程序都可以用

公共對(duì)話(huà)框來(lái)提示同樣的用戶(hù)輸入。當(dāng)用戶(hù)在另一個(gè)窗口中工

作時(shí),許多應(yīng)用程序也用對(duì)話(huà)框顯示信息選項(xiàng)。例如,字處理

應(yīng)用程序經(jīng)常在文本搜索命令中使用一個(gè)對(duì)話(huà)框。應(yīng)用程序在

搜索文本期間,該對(duì)話(huà)框?qū)⒈4嬖谄聊簧?。用?hù)可以返回到該

對(duì)話(huà)框中,并再次搜索同樣的字符串、或者改變?cè)搶?duì)話(huà)框中的

輸入、搜索一個(gè)新的字符串。以這種方式使用對(duì)話(huà)框的應(yīng)用程

序,在該應(yīng)用程序運(yùn)行期間或在用戶(hù)明確地關(guān)閉對(duì)話(huà)框之前,

一般都將創(chuàng)建并保持顯示一個(gè)對(duì)話(huà)框。為了支持應(yīng)用程序以不同的方法使用對(duì)話(huà)框,Windows提供了兩種類(lèi)型的對(duì)話(huà)框:模式對(duì)話(huà)框和無(wú)模式對(duì)話(huà)框。模式對(duì)話(huà)框在允許應(yīng)用程序繼續(xù)運(yùn)行之前,要求用戶(hù)必須提供信息或取消該對(duì)話(huà)框,應(yīng)用程序把模式對(duì)話(huà)框與不輸入附加信息就不能繼續(xù)執(zhí)行的命令一起使用;無(wú)模式對(duì)話(huà)框允許用戶(hù)提供信息并返回前一任務(wù),但不關(guān)閉該對(duì)話(huà)框。由于模式對(duì)話(huà)框通過(guò)調(diào)用單個(gè)函數(shù)就可以創(chuàng)建、執(zhí)行它們的任務(wù),所以比無(wú)模式對(duì)話(huà)框更容易管理。

不管是創(chuàng)建一個(gè)模式對(duì)話(huà)框還是無(wú)模式對(duì)話(huà)框,應(yīng)用程序都必須提供一個(gè)對(duì)話(huà)框模板來(lái)描述對(duì)話(huà)框的樣式和內(nèi)容,并提供一個(gè)對(duì)話(huà)框過(guò)程來(lái)完成任務(wù)。對(duì)話(huà)框模板就是對(duì)話(huà)框及其所含控件的一個(gè)二進(jìn)制描述。開(kāi)發(fā)人員可以創(chuàng)建這個(gè)模板,把它做為從可執(zhí)行文件中裝入的一個(gè)資源,對(duì)話(huà)框過(guò)程就是一個(gè)應(yīng)用程序自定義的回調(diào)函數(shù)。盡管對(duì)話(huà)框過(guò)程與窗口過(guò)程是相似的,但它們各自所負(fù)的責(zé)任是不同的。應(yīng)用程序一般可以用DialogBox或CreateDialog函數(shù)創(chuàng)建對(duì)話(huà)框。DialogBox用于創(chuàng)建模式對(duì)話(huà)框;CreateDialog函數(shù)用于創(chuàng)建一個(gè)無(wú)模式對(duì)話(huà)框。這兩個(gè)函數(shù)將從應(yīng)用程序的可執(zhí)行文件中裝入對(duì)話(huà)框模板,并創(chuàng)建一個(gè)與該模板對(duì)應(yīng)的規(guī)格相符的彈出式窗日。還有其他一些函數(shù)可以用內(nèi)存中的模板創(chuàng)建對(duì)話(huà)框,并在對(duì)話(huà)框創(chuàng)建完后把附加信息傳遞給對(duì)話(huà)框過(guò)程。對(duì)話(huà)框通常都屬于一個(gè)預(yù)定義的專(zhuān)有窗口類(lèi)。不管是模式對(duì)話(huà)框還是無(wú)模式對(duì)話(huà)框,Windows都使用這個(gè)窗口類(lèi)及與其對(duì)應(yīng)的窗口過(guò)程。調(diào)用這個(gè)過(guò)程時(shí),它將先創(chuàng)建對(duì)話(huà)框的窗口,以及該對(duì)話(huà)框中所有控件的窗口,然后再給對(duì)話(huà)框過(guò)程發(fā)送消息。在對(duì)話(huà)框可見(jiàn)期間,預(yù)定義的窗口過(guò)程將管理所有消息,處理一些消息,并把其他消息傳給對(duì)話(huà)框父窗日的消息處理函數(shù)。應(yīng)用程序不能直接訪(fǎng)問(wèn)預(yù)定義窗口類(lèi)或窗口過(guò)程,但是它們可以用對(duì)話(huà)框模板和對(duì)話(huà)框過(guò)程修改對(duì)話(huà)框的樣式和特性。無(wú)模式對(duì)話(huà)框:無(wú)模式對(duì)話(huà)框應(yīng)該是一個(gè)彈出式窗口,其中包含有系統(tǒng)菜單、標(biāo)題欄和邊界,也就是說(shuō),對(duì)話(huà)框模板應(yīng)該指定WS_

POPUP、WS_

CAPTION、WS_

BORDER和WS_

SYSMENU等風(fēng)格。Windows不會(huì)自動(dòng)顯示該對(duì)話(huà)框,只有在指定該模板的風(fēng)格為WS_VISIBLE時(shí)才會(huì)自動(dòng)顯示。應(yīng)用程序用CreateDialog或CreateDialogIndirect函數(shù)創(chuàng)建無(wú)模話(huà)框。其中函數(shù)CreateDialog的原型定義如下:無(wú)模式對(duì)話(huà)框既不能使父窗口無(wú)效,也不給它發(fā)送消息。在創(chuàng)建對(duì)話(huà)框時(shí),Windows將使其成為活動(dòng)窗口,但用戶(hù)或應(yīng)用程序任何時(shí)候都可以改變活動(dòng)窗口。如果該對(duì)話(huà)框變成了非活動(dòng)的,應(yīng)用程序?qū)⒇?fù)責(zé)為對(duì)話(huà)框檢取和分發(fā)輸入消息。大多數(shù)應(yīng)用程序都是使用這消息循環(huán)來(lái)完成這一項(xiàng)工作的。但是,為了允許用戶(hù)用鍵盤(pán)移動(dòng)到控件上并選取控件,應(yīng)用程序必須調(diào)用IsDialogMessage函數(shù),該函數(shù)的原型定義如下:無(wú)模式對(duì)話(huà)框不像模式對(duì)話(huà)框那樣給應(yīng)用程序返回一個(gè)值,但是對(duì)話(huà)框過(guò)程可以用SendMessage函數(shù)給父窗口發(fā)送消息。應(yīng)用程序在結(jié)束前必須銷(xiāo)毀所有的無(wú)模式對(duì)話(huà)框。這可以通過(guò)調(diào)用Destroywindow函數(shù)銷(xiāo)毀一個(gè)無(wú)模式對(duì)話(huà)框。在大多數(shù)情況下,單擊Cancel按鈕時(shí),程序調(diào)用DestroyWindow函數(shù),如果用戶(hù)不以這種方式關(guān)閉對(duì)話(huà)框,則應(yīng)用程序必須在其他地方調(diào)用

DestroyWindow函數(shù)。函數(shù)DestroyWindow將使對(duì)話(huà)框的窗口句柄變?yōu)闊o(wú)效,從而使得對(duì)使用這個(gè)句柄的函數(shù)的任何后續(xù)調(diào)用都返回錯(cuò)誤值。為了防止出現(xiàn)錯(cuò)誤,對(duì)話(huà)框過(guò)程應(yīng)該通知其父窗口,說(shuō)明該對(duì)話(huà)框已經(jīng)被銷(xiāo)毀。許多應(yīng)用程序都需要維護(hù)一個(gè)含有該對(duì)話(huà)框句柄的全局變量,當(dāng)對(duì)話(huà)框過(guò)程銷(xiāo)毀對(duì)話(huà)框時(shí),它將把該全局變量設(shè)置成NULL,說(shuō)明該對(duì)話(huà)框已經(jīng)不再存在了。無(wú)模式對(duì)話(huà)框的對(duì)話(huà)框過(guò)程不能調(diào)用EndDialog函數(shù)來(lái)銷(xiāo)毀它。三、模式對(duì)話(huà)框模式對(duì)話(huà)框也是一個(gè)彈出式窗口,應(yīng)用程序通過(guò)DialogBox函數(shù)和DialogBoxIndirect函數(shù)可以創(chuàng)建模式對(duì)話(huà)框。DialogBox函的原型定義如下:在創(chuàng)建模式對(duì)話(huà)框時(shí),Windows將使其成為活動(dòng)窗口。該對(duì)話(huà)框?qū)⒁恢北3譃榛顒?dòng)狀態(tài),直到對(duì)話(huà)框過(guò)程調(diào)用了EndDialog函數(shù),或Windows激活了另一個(gè)應(yīng)用程序中的一個(gè)窗口。在模式對(duì)話(huà)框銷(xiāo)毀之前,用戶(hù)或應(yīng)用程序都不能使其父窗口成為活動(dòng)窗口。當(dāng)應(yīng)用程序創(chuàng)建模式對(duì)話(huà)框時(shí),如果其父窗口還不是無(wú)效的,則Windows將自動(dòng)使該窗口和屬于該窗口的所有子窗口都變成無(wú)效。在該對(duì)話(huà)框銷(xiāo)毀之前,其父窗口將一直保持無(wú)效。盡管對(duì)話(huà)框過(guò)程任何時(shí)候都有能力使父窗口變成有效的,但是使父窗口有效就達(dá)不到使用模式對(duì)話(huà)框的目的,因此不建議這樣做。 當(dāng)Windows創(chuàng)建模式對(duì)話(huà)框時(shí),它將給當(dāng)前捕獲鼠標(biāo)輸入的窗口發(fā)送WM

CANCELMODE消息。接收這條消息的應(yīng)用程序應(yīng)該釋放鼠標(biāo),以便用戶(hù)可以在模式對(duì)話(huà)框中使用鼠標(biāo)。由于Windows將使父窗口無(wú)效,所以,在接收到這條消息時(shí),如果父窗口不能釋放鼠標(biāo),則所有的鼠標(biāo)輸入都將丟失。為了處理模式對(duì)話(huà)框的消息,Windows將啟動(dòng)自己的消息循環(huán),臨時(shí)接管對(duì)整個(gè)應(yīng)用程序消息隊(duì)列的控制。如果Windows檢取到一條明顯不是用于對(duì)話(huà)框的消息,則把消息分發(fā)給正確的窗口。如果它檢取到一條WM_QUIT消息,則它將該消息投遞回應(yīng)用程序的消息隊(duì)列,使得應(yīng)用程序的主消息循環(huán)最終能夠檢取到該消息。只要應(yīng)用程序的消息隊(duì)列為空,Windows就把WM_CANCELDLE消息發(fā)送給父窗口,應(yīng)用程序可以利用這條消息,在對(duì)話(huà)框仍然占據(jù)屏幕期間,完成一項(xiàng)后臺(tái)任務(wù)。如果應(yīng)用程序以這種方式使用消息,則它必須頻繁交出控制權(quán),使模式對(duì)話(huà)框可以接收用戶(hù)輸入。應(yīng)用程序可以在創(chuàng)建該對(duì)話(huà)框時(shí)通過(guò)指定DS_NOIDLEMSG風(fēng)格,禁止模式對(duì)話(huà)框發(fā)送WM_ENTEAIDLE。公共對(duì)話(huà)框使Windows應(yīng)用程序的設(shè)計(jì)變得更為簡(jiǎn)單。公共對(duì)話(huà)框是應(yīng)用程序通過(guò)調(diào)用某個(gè)函數(shù)而不是通過(guò)提供對(duì)話(huà)框過(guò)程和包含對(duì)話(huà)框模板的資源文件來(lái)創(chuàng)建對(duì)話(huà)框。在動(dòng)態(tài)鏈接庫(kù)COMMDLG.DLL中定義了各種公共對(duì)話(huà)框的過(guò)程和模板。每個(gè)默認(rèn)對(duì)話(huà)框過(guò)程處理公共對(duì)話(huà)框和它控制的消息,默認(rèn)對(duì)話(huà)框模板定義公共對(duì)話(huà)框的外觀(guān)和它的控制。

由于公共對(duì)話(huà)框提供執(zhí)行某些操作的一組標(biāo)準(zhǔn)控件,因此它們除了簡(jiǎn)化Windows應(yīng)用程序的開(kāi)發(fā)外,也對(duì)用戶(hù)有幫助。當(dāng)Windows開(kāi)發(fā)者在它們的應(yīng)用程序中使用公共對(duì)話(huà)框后,用戶(hù)會(huì)發(fā)現(xiàn)一旦在一個(gè)應(yīng)用程序中掌握了公共對(duì)話(huà)框,就能在其他的應(yīng)用程序中很輕易地執(zhí)行同樣的操作。在Windows中定義的各種公共對(duì)話(huà)框如表所示。Open和Save

As對(duì)話(huà)框: Open對(duì)話(huà)框和Save

AS對(duì)話(huà)框的外形類(lèi)似,每個(gè)對(duì)話(huà)框都包含能使用戶(hù)指定文件或一級(jí)文件位置和名字的控件。在Open對(duì)話(huà)框中,用戶(hù)選擇要打開(kāi)的文件。在Save

As對(duì)話(huà)框中,用戶(hù)選取要保存的文件。Open對(duì)話(huà)框如圖所示。Save

As對(duì)話(huà)框如圖所示。Font對(duì)話(huà)框:Font對(duì)話(huà)框允許用戶(hù)選擇字體、字體風(fēng)格、點(diǎn)陣大小以及字體效果的控件。Font對(duì)話(huà)框如圖所示。Find和Replace對(duì)話(huà)框:

Find和Replace對(duì)話(huà)框外形相似。Find對(duì)話(huà)框用于給

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論