

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第4章 Windows程序設(shè)計(jì)的基本概念,教學(xué)要點(diǎn) 本章內(nèi)容主要包括Windows應(yīng)用程序的特點(diǎn),VC兩種編程模式都要用到的基本概念及利用API編寫(xiě)簡(jiǎn)單的Windows程序的方法與步驟。 要求了解回調(diào)函數(shù)和圖形設(shè)備接口概念、VC程序的命名規(guī)則和消息驅(qū)動(dòng)機(jī)制,掌握窗口、實(shí)例、句柄、資源的概念,熟悉Windows圖形用戶(hù)界面中的元素,熟練掌握掌握建立Win32應(yīng)用程序的步驟和WinMain()函數(shù)
2、形參的含義。,,4.1 Win 32編程特點(diǎn)4.2 Windows程序用到的基本術(shù)語(yǔ) 4.3 開(kāi)發(fā)Windows程序基本步驟,4.1.1Windows運(yùn)行機(jī)制——消息驅(qū)動(dòng)4.1.2應(yīng)用程序與Windows操作系統(tǒng)緊密相連4.1.3圖形界面4.1.4 Windows基本數(shù)據(jù)類(lèi)型,4.1Win 32編程特點(diǎn),,,消息驅(qū)動(dòng),在別的程序設(shè)計(jì)語(yǔ)言中又叫事件驅(qū)動(dòng)。在執(zhí)行過(guò)程中,如果用戶(hù)需要輸入什么參數(shù)或用戶(hù)需要作
3、出選擇,程序?qū)⒌却脩?hù)的輸入。只有用戶(hù)提供了足夠的數(shù)據(jù)程序才能繼續(xù)進(jìn)行下去,否則它將一直等待下去,應(yīng)用程序不會(huì)自己選擇其它的途徑或完成其它的功能,用戶(hù)也不能干預(yù)程序的運(yùn)行過(guò)程。 在消息驅(qū)動(dòng)的程序結(jié)構(gòu)中,程序控制流程是由實(shí)際運(yùn)行時(shí)各種事件的實(shí)際發(fā)生來(lái)觸發(fā),而事件的發(fā)生可能是隨機(jī)的、不確定的,并沒(méi)有預(yù)先的順序。消息驅(qū)動(dòng)是一種面向用戶(hù)的程序設(shè)計(jì)方法,在程序設(shè)計(jì)過(guò)程中除了完成所需要的程序功能之外,更多的是要考慮用戶(hù)可能的各種輸入消息,并有針對(duì)
4、性地設(shè)計(jì)相應(yīng)的處理程序。消息驅(qū)動(dòng)程序設(shè)計(jì)還是一種被動(dòng)式的程序設(shè)計(jì)方法,程序開(kāi)始運(yùn)行時(shí),處于等待消息狀態(tài),當(dāng)取得消息后就對(duì)其作出相應(yīng)反應(yīng),處理完畢后又返回等待消息的狀態(tài)。消息驅(qū)動(dòng)的程序就是一個(gè)不斷產(chǎn)生消息和處理消息的過(guò)程是一個(gè)更加模塊化、更加獨(dú)立的程序。,4.1.1 Windows運(yùn)行機(jī)制——消息驅(qū)動(dòng),4.1.2 應(yīng)用程序與Windows操作系統(tǒng)緊密相連,利用VC進(jìn)行Windows應(yīng)用程序開(kāi)發(fā)的一個(gè)顯著特點(diǎn)就是,應(yīng)用程序與操作系統(tǒng)的
5、聯(lián)系非常密切。對(duì)操作系統(tǒng)比較熟悉的人編制程序相對(duì)來(lái)說(shuō)就輕松一些,反之,學(xué)會(huì)利用VC進(jìn)行Windows應(yīng)用程序開(kāi)發(fā)的人,往往會(huì)對(duì)操作系統(tǒng)有一個(gè)清晰的認(rèn)識(shí)。設(shè)計(jì)C語(yǔ)言的目的就是進(jìn)行操作系統(tǒng)的開(kāi)發(fā)。在Windows環(huán)境下開(kāi)發(fā)程序時(shí),絕對(duì)不能忽視操作系統(tǒng)所起的作用,因?yàn)槲覀儠r(shí)時(shí)刻刻在與操作系統(tǒng)打交道。 最明顯和操作系統(tǒng)打交道的例子就是消息傳遞。消息與事件緊密相連,事件是源,消息是果,消息是一個(gè)事件的代表,程序運(yùn)行過(guò)程中的任何一個(gè)事件都產(chǎn)生一個(gè)
6、消息,比如按了鍵盤(pán)的某個(gè)鍵就會(huì)產(chǎn)生鍵盤(pán)的消息。,,Windows程序設(shè)計(jì)是消息驅(qū)動(dòng)的,消息傳遞是它的核心,而消息管理是由 Windows完成的,應(yīng)用程序要獲得消息就要從操作系統(tǒng)中獲得。應(yīng)用程序有兩種獲得消息的方式: 回調(diào)函數(shù)一經(jīng)設(shè)計(jì)好,就成了Windows系統(tǒng)的擴(kuò)展,就會(huì)在發(fā)生別的事件時(shí),由操作系統(tǒng)自動(dòng)調(diào)用該回調(diào)函數(shù)。在應(yīng)用程序的任何地方找不到明顯調(diào)用該函數(shù)的地方,用DOS編程觀點(diǎn)來(lái)看,似乎此函數(shù)并沒(méi)有用到,事實(shí)上回調(diào)函
7、數(shù)不僅用到了,而且起了很大作用,正是通過(guò)它,應(yīng)用程序才獲得了消息,才知道當(dāng)前發(fā)生了什么事件,才根據(jù)不同的事件采取不同的處理措施。,4.1.2 應(yīng)用程序與Windows操作系統(tǒng)緊密相連(續(xù)),1.應(yīng)用程序調(diào)用Windows提供的獲取消息函數(shù),如GetMessage()2.由Windows調(diào)用程序員提供的一種特殊函數(shù)——回調(diào)函數(shù)。,4.1.3圖形界面,Windows支持豐富的圖形用戶(hù)界面對(duì)象,包括窗口、圖標(biāo)、對(duì)話框等。1.窗口窗
8、口是Windows圖形界面中最重要的部分,是屏幕上與一個(gè)應(yīng)用程序相對(duì)應(yīng)的矩形區(qū)域,關(guān)閉了一個(gè)窗口后,相應(yīng)的應(yīng)用程序就被關(guān)閉。2.客戶(hù)區(qū) 客戶(hù)區(qū)是窗口中最大的一塊空白矩形區(qū)域,它是用戶(hù)與系統(tǒng)進(jìn)行交互的主要區(qū)域,一般用于顯示應(yīng)用程序的輸出。3.標(biāo)題欄 標(biāo)題欄位于窗口頂部,其中顯示的文本一般用于標(biāo)注應(yīng)用程序的名稱(chēng)。標(biāo)題欄的顏色反映該窗口是否是一個(gè)活動(dòng)窗口。標(biāo)題欄是屬于非客戶(hù)區(qū)域。,,4.菜單欄 菜單欄用戶(hù)最熟悉,它位
9、于標(biāo)題欄的下方,橫跨窗口,上面列出了應(yīng)用程序支持的大部分功能。5.圖標(biāo) 一個(gè)用于提醒用戶(hù)的小小圖像,它代表一個(gè)應(yīng)用程序。當(dāng)一個(gè)應(yīng)用程序最小化時(shí),就呈現(xiàn)為一個(gè)圖標(biāo)。6.光標(biāo) Windows光標(biāo)是顯示在屏幕上的一個(gè)位圖 ,用于響應(yīng)鼠標(biāo)或其它定位設(shè)備的操作。在應(yīng)用程序中,常常通過(guò)改變光標(biāo)形狀來(lái)指出程序的操作狀態(tài)。7.工具欄 工具欄位于菜單欄下方,上面的位圖按鈕代表最常用的命令。讓鼠標(biāo)在某個(gè)按鈕停一會(huì),就會(huì)在
10、按鈕下方出現(xiàn)一個(gè)黃色的小窗口,里面顯示該按鈕的簡(jiǎn)單提示信息。,4.1.3 圖形界面(續(xù)),,8.狀態(tài)欄 狀態(tài)欄位于窗口底端,用于輸出菜單的詳細(xì)說(shuō)明和其它一些提示信息。9.對(duì)話框 對(duì)話框是一種特殊窗口,主要用于接收用戶(hù)輸入和輸出。一般在選擇菜單名稱(chēng)后面帶有省略號(hào)(…)的菜單項(xiàng)時(shí)會(huì)彈出一個(gè)對(duì)話框。10.控件 對(duì)話框中包含的許多小窗口都是控件。如“查找與替換”對(duì)話框上的“查找內(nèi)容(N)后就是一個(gè)編輯
11、框控件,“取消”操作就是一個(gè)按鈕控件。,4.1.3 圖形界面(續(xù)),,4.1.4 Windows基本數(shù)據(jù)類(lèi)型,在標(biāo)準(zhǔn)的C/C++語(yǔ)言中,int、char、float、double都是常見(jiàn)的數(shù)據(jù)類(lèi)型,而在32位Windows的C/C++開(kāi)發(fā)平臺(tái)中,為了滿足數(shù)據(jù)定義需要,又添加了一系列新的數(shù)據(jù)類(lèi)型。表示指針型的數(shù)據(jù)類(lèi)型往往以P或LP作為前綴,而句柄型則總是冠以H。在Windows應(yīng)用程序中,不可避免地要使用各種各樣的句柄。簡(jiǎn)單地說(shuō),它是
12、用來(lái)標(biāo)識(shí)諸如菜單、圖標(biāo)、窗口、內(nèi)存塊、輸出設(shè)備等信息的,通過(guò)它可以訪問(wèn)各種資源。句柄并非對(duì)象所在的地址指針,它是作為系統(tǒng)內(nèi)部表的索引值來(lái)使用的。譬如說(shuō),一個(gè)窗口打開(kāi)之后,對(duì)應(yīng)內(nèi)存中的一個(gè)內(nèi)存塊,這個(gè)窗口所在的內(nèi)存塊地址往往會(huì)由操作系統(tǒng)作動(dòng)態(tài)調(diào)整,但其句柄卻不會(huì)隨之變化,我們不必關(guān)心其地址的變化,而是簡(jiǎn)單地通過(guò)作為窗口標(biāo)識(shí)的句柄來(lái)訪問(wèn)這個(gè)窗口。如果該應(yīng)用程序有幾個(gè)副本在同時(shí)運(yùn)行,那么每個(gè)這種窗口都會(huì)有一個(gè)各不相同的句柄。,,表4.1 基本
13、數(shù)據(jù)類(lèi)型,,表4.1基本數(shù)據(jù)類(lèi)型(續(xù)),,表4.1基本數(shù)據(jù)類(lèi)型(續(xù)),4.2Windows程序用到的基本術(shù)語(yǔ),4.2.1 窗口 4.2.2 實(shí)例 4.2.3 句柄 4.2.4 資源 4.2.5 窗口函數(shù) 4.2.6 圖形設(shè)備接口 4.2.7 回調(diào)函數(shù),4.2.1 窗 口,從表面理解,窗口無(wú)非是一個(gè)矩形區(qū)域。從程序運(yùn)行的內(nèi)存組織角度看,窗口對(duì)應(yīng)
14、的是一個(gè)數(shù)據(jù)結(jié)構(gòu)WNDCLASS,從用戶(hù)的角度看,窗口是用戶(hù)輸入輸出數(shù)據(jù)的一個(gè)接口,通過(guò)它,Windows應(yīng)用程序才能取得外部的數(shù)據(jù)并把處理后的數(shù)據(jù)顯示在屏幕矩形區(qū)域中。從程序的內(nèi)部處理過(guò)程看,每一個(gè)窗口對(duì)應(yīng)著一個(gè)應(yīng)用程序的消息處理隊(duì)列,應(yīng)用程序主要通過(guò)窗口函數(shù)來(lái)對(duì)用戶(hù)的輸入進(jìn)行處理。 可見(jiàn)窗口是Windows應(yīng)用程序基本操作單元,是應(yīng)用程序與用戶(hù)之間交互的接口環(huán)境,也是系統(tǒng)管理應(yīng)用程序的基本單位。編寫(xiě)一個(gè)Windows的應(yīng)
15、用程序首先應(yīng)創(chuàng)建一個(gè)或多個(gè)窗口,隨后應(yīng)用程序的運(yùn)行過(guò)程即是窗口內(nèi)部、窗口和窗口之間、窗口和系統(tǒng)之間進(jìn)行數(shù)據(jù)處理和數(shù)據(jù)交換的過(guò)程。作為一個(gè)Windows程序設(shè)計(jì)人員,我們首先要搞清Windows這個(gè)數(shù)據(jù)結(jié)構(gòu)。,4.2.2 實(shí)例,一個(gè)實(shí)例代表一個(gè)可執(zhí)行程序在內(nèi)存中的拷貝。在Windows系統(tǒng)中,可執(zhí)行程序的每次運(yùn)行都代表完全獨(dú)立的進(jìn)程,各個(gè)進(jìn)程都有自己的虛擬地址空間。若一個(gè)應(yīng)用程序執(zhí)行許多次,在內(nèi)存中就有多個(gè)程序的拷貝,也可以說(shuō)是一個(gè)應(yīng)用
16、程序在內(nèi)存中有多個(gè)實(shí)例。應(yīng)用程序的實(shí)例句柄對(duì)于管理整個(gè)應(yīng)用程序的資源很重要,因此我們常常在Windows程序的入口WinMain()處將實(shí)例句柄保存在全局變量中。,4.2.3句柄,句柄這個(gè)概念在Windows的程序設(shè)計(jì)中常常碰到。Windows對(duì)絕大多數(shù)對(duì)象的引用都是通過(guò)句柄來(lái)進(jìn)行的。在Windows環(huán)境中,句柄可以用來(lái)標(biāo)識(shí)模塊、任務(wù)、實(shí)例、文件、內(nèi)存塊、菜單、控件、字體、資源、,包括圖標(biāo)、光標(biāo)、字符串、GDI對(duì)象,包括位圖)、
17、畫(huà)刷、元文件、調(diào)色板、畫(huà)筆、區(qū)域以及設(shè)備描述表。Windows程序并不是用物理地址來(lái)標(biāo)識(shí)一個(gè)內(nèi)存塊、文件、任務(wù)或動(dòng)態(tài)裝入模塊的,相反,Windows API給這些項(xiàng)目分配確定的句柄,并將句柄返回給應(yīng)用程序,然后通過(guò)句柄來(lái)進(jìn)行操作。句柄是內(nèi)部表格的索引值,Windows通過(guò)句柄到內(nèi)部表格中去存取相關(guān)信息。因此應(yīng)用程序只能處理到句柄的層次,并不能直接獲取表格中的數(shù)據(jù)。表4.5是常見(jiàn)的句柄類(lèi)型及其含義。,表4.5 常見(jiàn)的句柄類(lèi)型及其含義,
18、4.2.4 資源,一個(gè)Windows程序,往往有菜單、工具條、對(duì)話框、位圖、圖標(biāo)、加速鍵、字符串等,這些元素都被稱(chēng)為資源。應(yīng)用程序不僅可以使用操作系統(tǒng)所提供的資源,而且可以在VC開(kāi)發(fā)環(huán)境中利用相應(yīng)的資源編輯器建立自己的資源。應(yīng)用程序的資源被定義在.RC文件中,資源可以預(yù)先編輯、獨(dú)立編譯,最后與可執(zhí)行模塊鏈接在一起,形成可獨(dú)立執(zhí)行的.EXE文件或動(dòng)態(tài)鏈接庫(kù)文件.DLL。當(dāng)應(yīng)用程序需要這些資源時(shí),可以利用Windows的API函數(shù)將這些
19、資源調(diào)入??梢?jiàn),Windows應(yīng)用程序的資源是自己攜帶的,這要比將資源作為外部文件方便的多。由于資源與程序代碼是分離的,“招之即來(lái),揮之即去”,當(dāng)使用時(shí)才調(diào)入內(nèi)存,這減少了程序運(yùn)行時(shí)對(duì)內(nèi)存的消耗量。,4.2.5 窗口函數(shù),由于窗口是應(yīng)用程序與用戶(hù)交互的接口,當(dāng)窗口接受到輸入時(shí),必定交給某個(gè)函數(shù)加以處理,這個(gè)負(fù)責(zé)處理消息的函數(shù)就是窗口函數(shù),它決定了當(dāng)一個(gè)消息被接收時(shí)所采取的動(dòng)作。窗口函數(shù)是一個(gè)對(duì)每一個(gè)消息利用switch語(yǔ)句進(jìn)行處理的
20、函數(shù),它是Windows消息驅(qū)動(dòng)機(jī)制的發(fā)動(dòng)機(jī)。下一節(jié)以一個(gè)具體的實(shí)例來(lái)詳細(xì)解釋。,4.2.6 圖形設(shè)備接口,Windows應(yīng)用程序的全部輸出(包括顯示和打?。┒急仨毻ㄟ^(guò)圖形設(shè)備接口(Graphic Device Interface,簡(jiǎn)稱(chēng)GDI)中的函數(shù)來(lái)完成,GDI是Windows系統(tǒng)重要組成部分,負(fù)責(zé)系統(tǒng)與用戶(hù)或繪圖程序之間的信息交換,并控制在輸出設(shè)備上顯示圖形或文字。其最大作用就是將程序員與具體的物理設(shè)備相隔離,使得程序員沒(méi)有必要
21、考慮具體設(shè)備的操作細(xì)節(jié)(如顯示緩存的地址、打印機(jī)的端口等),無(wú)論是使用顯示還是打印,使用的都是同一個(gè)API函數(shù)。 通俗的來(lái)說(shuō),我們可以把GDI看作一個(gè)大的繪圖工具箱,所有在窗口上所繪制的東西,都必須使用工具箱中的東西,即GDI中函數(shù)。學(xué)習(xí)GDI,關(guān)鍵是要搞清楚這些函數(shù)的分類(lèi)及其用法。,4.2.7回調(diào)函數(shù),回調(diào)函數(shù),顧名思義,就是寫(xiě)好了等著別人來(lái)調(diào)用的函數(shù)。這些函數(shù)的原型都是由調(diào)用者自己定義好的,使用的時(shí)候,只要按照原型定義一個(gè)函
22、數(shù),然后將函數(shù)指針傳遞過(guò)去就行了。它們只能通過(guò)Windows操作系統(tǒng)來(lái)調(diào)用,這些函數(shù)我們可以根據(jù)自己的需要設(shè)計(jì),但不能直接調(diào)用它們?;卣{(diào)函數(shù)必須嚴(yán)格地按Windows系統(tǒng)的規(guī)定進(jìn)行說(shuō)明和定義。前面所所的“窗口函數(shù)”就是一個(gè)典型的回調(diào)函數(shù),當(dāng)注冊(cè)窗口類(lèi)時(shí),要將函數(shù)地址告訴Windows,Windows通過(guò)調(diào)用該窗口函數(shù)來(lái)讓窗口處理消息。當(dāng)發(fā)送消息給程序時(shí),Windows調(diào)用此函數(shù)進(jìn)行消息的處理。窗口函數(shù)調(diào)用約定、返回值以及參數(shù)都是固定的
23、,程序員必須按其規(guī)定進(jìn)行才能正常工作。,4.3開(kāi)發(fā)Windows程序基本步驟,這節(jié)以一個(gè)簡(jiǎn)單的Windows應(yīng)用程序?yàn)槔齺?lái)講解編寫(xiě)Windows程序的基本步驟,除了了解創(chuàng)建的步驟外,還要熟悉每個(gè)步驟所操作的對(duì)象與應(yīng)用程序的關(guān)系。 【例4-1】調(diào)用API函數(shù)MessageBox()實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Windows程序。,4.3.1建立一個(gè)Win32工程4.3.2建立頭文件4.3.3建立Win32 Application實(shí)現(xiàn)文件
24、4.3.4分析Win32應(yīng)用程序*4.3.5建立資源文件*4.3.6VC編程流程及各組件作用*4.3.7VC項(xiàng)目中的文件類(lèi)型,,,,,,,,4.3.1建立一個(gè)Win32工程,在Windows環(huán)境下,一個(gè)應(yīng)用程序的組織是以工程為單位來(lái)進(jìn)行的,這與利用TC來(lái)開(kāi)發(fā)DOS下的應(yīng)用程序大不相同。在TC下,一個(gè)應(yīng)用程序主要包含一個(gè).C文件,而用VC開(kāi)發(fā)應(yīng)用程序時(shí),一個(gè)應(yīng)用程序包括各種各樣的文件(通過(guò)文件擴(kuò)展名來(lái)標(biāo)識(shí),具體信息見(jiàn) 4
25、.3.6節(jié))。 工程文件是整個(gè)應(yīng)用程序的總調(diào)度中心,負(fù)責(zé)調(diào)度構(gòu)建Windows程序的各個(gè)職能部門(mén)(各類(lèi)文件),因此開(kāi)發(fā)一個(gè)應(yīng)用程序,首先要利用應(yīng)用程序向?qū)ppWizard創(chuàng)建一個(gè)工程程序。利用向?qū)鶆?chuàng)建的一個(gè)工程程序,實(shí)質(zhì)上是一個(gè)應(yīng)用程序的框架。,,4.3.2建立頭文件,當(dāng)利用AppWizard創(chuàng)建好一個(gè)工程后,也就創(chuàng)建了一個(gè)應(yīng)用程序架構(gòu)。對(duì)于滿足特定用戶(hù)需要的應(yīng)用程序,我們還必須在其中添加一些東西。因此就必須利用VC工具去添加。
26、如果把上節(jié)創(chuàng)建的工程比做一個(gè)人的骨架話,下面幾節(jié)創(chuàng)建的文件就類(lèi)似與人的血肉。下面講如何創(chuàng)建頭文件這塊血肉,并闡明該血肉的功能。1.打開(kāi)Visual C++的集成開(kāi)發(fā)環(huán)境Developer Studio。2.擇菜單命令“File|New|Files”。該選項(xiàng)下給出了VC可以創(chuàng)建的各種文件的類(lèi)型。由于我們要?jiǎng)?chuàng)建頭文件,因此我們選擇“C/C++ Header File”。并在File編輯框里輸入頭文件的名稱(chēng)。一般所創(chuàng)建的頭文件要添加到當(dāng)前
27、的工程中,因而要把“Add To Project”選擇框選中。,4.3.3 建立Win32 Application實(shí)現(xiàn)文件,頭文件一般存放在.h文件中,其相應(yīng)的實(shí)現(xiàn)文件要放到對(duì)應(yīng)的實(shí)現(xiàn)文件.cpp中。下面是在工程中添加實(shí)現(xiàn)文件的步驟: 1.啟動(dòng)Visual C++的集成開(kāi)發(fā)環(huán)境Developer Studio。 2.選擇菜單命令“File|New|Files”。選擇“C/C++ Source File”,并在File
28、編輯框里輸入實(shí)現(xiàn)文件的名稱(chēng)“FirstApiProg”。一般所創(chuàng)建的實(shí)現(xiàn)文件要添加到當(dāng)前的工程中,因而要把“Add To Project”選擇框選中。 3.單擊“OK”按鈕,VC自動(dòng)進(jìn)入到文件FirstApiProg.cpp編輯的編輯狀態(tài),,4.選擇“Build|Build FirstApiProg.exe”菜單項(xiàng)創(chuàng)建可執(zhí)行文件,然后選擇“Build|Execute FirstApiProg.exe”菜單項(xiàng)執(zhí)行剛才創(chuàng)建的可執(zhí)行文
29、件FirstApiProg.exe,程序運(yùn)行結(jié)果如圖4.2所示。,4.3.3 建立Win32 Application 實(shí)現(xiàn)文件(續(xù)),4.3.4 分析Win32應(yīng)用程序,1.windows應(yīng)用程序的頭文件 在FirstApiProg.cpp文件的開(kāi)頭有一個(gè)重要的頭文件windows.h,該文件是所有Windows應(yīng)用程序運(yùn)行必須的一個(gè)頭文件。該頭文件中包含了許多其它頭文件,在Windows
30、下搜索出該文件,打開(kāi)并觀察其內(nèi)容,可以看出在其中包含的的比較重要的頭文件如下: #include //用于定義基本數(shù)據(jù)類(lèi)型 #include #include #include 在這些頭文件中定義了windows所支持的基本數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)、常用的標(biāo)識(shí)符和操作系統(tǒng)所提供的所有API函數(shù)原型聲明。,,4.3.4 分析Win32應(yīng)用程序(續(xù)),2.Windows應(yīng)用程序的入口點(diǎn)在第
31、一篇的控制臺(tái)應(yīng)用程序中,程序的入口點(diǎn)總是main()函數(shù),如需要編寫(xiě)具有圖形用戶(hù)界面的Windows應(yīng)用程序,則程序的入口點(diǎn)變成了WinMain()。 (1)WinMain()的函數(shù)原型 WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ); 由于Wind
32、ows應(yīng)用程序可能并行地執(zhí)行多次,因而可能出現(xiàn)同一個(gè)應(yīng)用程序的多個(gè)窗口同時(shí)存在的情況,Windows系統(tǒng)將應(yīng)用程序每一次執(zhí)行稱(chēng)為該應(yīng)用程序的一個(gè)實(shí)例,并使用一個(gè)實(shí)例句柄來(lái)標(biāo)識(shí)它。,,在WinMain()函數(shù)中,hInstance是當(dāng)前應(yīng)用程序的實(shí)例句柄。參數(shù)lpCmdLine是指程序運(yùn)行時(shí)的命令行參數(shù),整型參數(shù)nCmdShow規(guī)定了窗口如何顯示,當(dāng)它的值為SW_SHOWNORMAL時(shí)代表正常顯示,值為SW_MINIMIZE代表最小化顯示
33、,值為SW_MAXIMIZE時(shí)代表最大化顯示等。,4.3.4分析Win32應(yīng)用程序(續(xù)),,3. MessageBox函數(shù) MessageBox是一個(gè)Woindows API函數(shù),它通過(guò)彈出一個(gè)消息對(duì)話框來(lái)顯示一些簡(jiǎn)短的信息。如報(bào)告任務(wù)的完成、報(bào)告一條嚴(yán)重的錯(cuò)誤等。該函數(shù)的原型為: int MessageBox( HWND hWnd, // 所屬窗口的句柄 LPCTSTR lpText, //
34、 需要顯示的提示信息 LPCTSTR lpCaption, // 對(duì)話框窗口的標(biāo)題字符串 UINT uType // 消息對(duì)話框的按鈕和圖標(biāo)類(lèi)型 );該函數(shù)的第四個(gè)參數(shù)可以指定對(duì)話框顯示的按鈕和和圖標(biāo)類(lèi)型。常用的提示圖標(biāo)類(lèi)型有MB_ICONQUESTION(“問(wèn)號(hào)”圖標(biāo)),MB_ICONSTOP(“出錯(cuò)”圖標(biāo))等。,4.3.4分析Win32應(yīng)用程序(續(xù)),*4.3.5建立資源文件,在VC中打開(kāi)一個(gè)工
35、程,要向其中添加一個(gè)資源,可通過(guò)下面的方法。1.啟動(dòng)Visual C++的集成開(kāi)發(fā)環(huán)境Developer Studio。2.選擇菜單命令“Insert|Resource…”,彈出“Insert Resource”對(duì)話框。3.在“Insert Resource”對(duì)話框中選擇資源類(lèi)型,單擊“New”按鈕生成一個(gè)新的資源。,4.3.6 VC編程流程及各組件作用,用VC開(kāi)發(fā)的應(yīng)用程序比較大,一個(gè)應(yīng)用程序牽涉到很多類(lèi)型的文件,在VC6
36、.0的集成開(kāi)發(fā)環(huán)境中包含有多個(gè)與開(kāi)發(fā)程序相關(guān)的組件。如文本編輯器、資源編輯器、類(lèi)向?qū)?、編譯器、鏈接器、調(diào)試器等。從一個(gè)項(xiàng)目的確立到開(kāi)發(fā)測(cè)試完畢要經(jīng)過(guò)很多階段,在不同的階段,不同的組件其著不同的作用。圖4.3顯示了VC應(yīng)用程序創(chuàng)建過(guò)程的一個(gè)綜述。流程圖(4.3),流程圖,*4.3.7VC項(xiàng)目中的文件類(lèi)型,VC編程過(guò)程中,在相應(yīng)的工程目錄中會(huì)生成很多類(lèi)型文件。它們都是與項(xiàng)目有關(guān)的文件,不能隨意刪除和修改它們。表4.7為VC應(yīng)用程序中的
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 面向?qū)ο髈o程序設(shè)計(jì)基本概念
- 程序設(shè)計(jì)語(yǔ)言基本概念與試題
- windows程序設(shè)計(jì)
- windows程序設(shè)計(jì)基礎(chǔ)
- windows ce程序設(shè)計(jì)
- windows程序設(shè)計(jì)習(xí)題
- pcb設(shè)計(jì)基本概念
- windows api窗口程序設(shè)計(jì)
- windows api窗口程序設(shè)計(jì)
- 橡膠配方設(shè)計(jì)基本概念
- 社區(qū)的基本概念
- 早會(huì)的基本概念
- 能源的基本概念
- 激勵(lì)的基本概念
- vlan基本概念
- vlan基本概念
- pfc基本概念
- 交互設(shè)計(jì)基本概念
- 起搏的基本概念
- vi的基本概念
評(píng)論
0/150
提交評(píng)論