VC|Windows應用程式開發特性和類嚮導
一個完整的Windows應用程式除了WinMain函數外,還包含用於處理使用者動作和視窗消息的視窗函數。這不同於一個C++的控制台應用程式,可以將整個套裝程式含在main函數中。事實上,它們的區別還遠不止這些,
消息驅動機制
圖形裝置介面(GDI)
基於資源的程式設計
動態連結程式庫
進程和執行緒
1 消息驅動機制在Windows操作環境中,無論是系統產生的動作或是使用者運行應用程式產生的動作,都稱為事件(Events)產生的消息(Message)。例如,在Windows 桌面(傳統風格)上,按兩下應用程式的快捷圖示,系統就會執行該應用程式。在Windows的應用程式中,
這種消息驅動的機制是Windows程式設計的最大特點。需要注意的是,許多Windows消息都經過了嚴格的定義,並且適用于所有的應用程式。例如,當使用者按下滑鼠的左鍵時系統就會發送WM_LBUTTONDOWN消息,而當使用者敲了一個字元鍵時系統就會發送WM_CHAR消息,若使用者進行功能表選擇或工具按鈕按一下等操作時,系統又會相應地發送WM_COMMAND消息給相應的視窗等等。
在傳統的DOS環境中,想要在印表機上列印一幅圖形是一件非常複雜的事情,因為使用者必須根據印表機類型和指令規則向印表機輸送資料。而Windows則提供了一個抽象的介面,稱為圖形裝置介面(Graphical Device Interface,簡稱GDI),使得使用者直接利用系統的GDI函數就能方便實現輸入或輸出,而不必關心與系統相連的外部設備的類型。
3 基於資源的程式設計Windows應用程式常常包含眾多圖形元素,
動態連結程式庫提供了一些特定結構的函數,
Windows提供了應用程式可利用的豐富的函式呼叫,大多數用於實現其使用者介面和在顯示器上顯示的文本和圖形,
在Windows作業系統中,最主要的DLL有KERNEL32.DLL、GDI32.DLL和USER32.DLL三個模組。其中,KERNEL32用來處理記憶體低層功能、任務和資源管理等Windows核心服務; GDI32用來提供圖形裝置介面,管理使用者介面和圖形繪製,包括Windows中繼檔、點陣圖、設備描述表和字體等;而USER32負責視窗的管理,包括消息、功能表、游標、計時器以及其它與控制視窗顯示相關的一些功能。
5 進程和執行緒在32位元Windows多工作業系統中,採用了進程和執行緒的管理模式。進程是裝入記憶體中正在執行的應用程式。進程包括私有的虛擬位址空間、代碼、資料及其它作業系統資源,如檔、管道以及對該進程可見的同步物件等。進程包括了一個或多個在進程上下文內運行的執行緒。執行緒是作業系統分配CPU時間的基本實體。執行緒可以執行應用程式碼的任何部分,包括當前正在被其它執行緒執行的那些部分。同一進程的所有執行緒共用同樣的虛擬位址空間、全域變數和作業系統資源。在一個應用程式中,可以包括一個或多個進程,每個進程由一個或多個執行緒構成。
VC中的ClassWizard對話方塊包含了5個標籤頁面,它們各自含義如下:
5.1 Message Maps(消息映射):用來添加、刪除和程式設計處理消息的成員函數。
5.2 Member Variables(成員變數):添加或刪除與控制項相關聯的成員變數(或稱資料成員),以便與控制項進行資料交換。這些控制項所在的類一般是從CDialog、CPropertyPage、CRecordView或CDaoRecordView中派生的類。
5.3 Automation(自動化):為支援Automation的類(如ActiveX控制項類)添加屬性和方法。
5.4 ActiveX Events(ActiveX事件):為ActiveX控制項類添加觸發事件的支持。
5.5 Class Info(類信息):有關專案中類的其他資訊。
一般來說,MFC ClassWizard對話方塊最前兩項是用戶最關心的,也是最經常使用的,因為幾乎所有的代碼編寫都要利用這兩個標籤項。由於Member Variables功能以後還會詳細討論,因此這裡僅討論Message Maps(消息映射)與類的添加和刪除方法。
5 進程和執行緒在32位元Windows多工作業系統中,採用了進程和執行緒的管理模式。進程是裝入記憶體中正在執行的應用程式。進程包括私有的虛擬位址空間、代碼、資料及其它作業系統資源,如檔、管道以及對該進程可見的同步物件等。進程包括了一個或多個在進程上下文內運行的執行緒。執行緒是作業系統分配CPU時間的基本實體。執行緒可以執行應用程式碼的任何部分,包括當前正在被其它執行緒執行的那些部分。同一進程的所有執行緒共用同樣的虛擬位址空間、全域變數和作業系統資源。在一個應用程式中,可以包括一個或多個進程,每個進程由一個或多個執行緒構成。
VC中的ClassWizard對話方塊包含了5個標籤頁面,它們各自含義如下:
5.1 Message Maps(消息映射):用來添加、刪除和程式設計處理消息的成員函數。
5.2 Member Variables(成員變數):添加或刪除與控制項相關聯的成員變數(或稱資料成員),以便與控制項進行資料交換。這些控制項所在的類一般是從CDialog、CPropertyPage、CRecordView或CDaoRecordView中派生的類。
5.3 Automation(自動化):為支援Automation的類(如ActiveX控制項類)添加屬性和方法。
5.4 ActiveX Events(ActiveX事件):為ActiveX控制項類添加觸發事件的支持。
5.5 Class Info(類信息):有關專案中類的其他資訊。
一般來說,MFC ClassWizard對話方塊最前兩項是用戶最關心的,也是最經常使用的,因為幾乎所有的代碼編寫都要利用這兩個標籤項。由於Member Variables功能以後還會詳細討論,因此這裡僅討論Message Maps(消息映射)與類的添加和刪除方法。