Windows核心編程(1)

來源:互聯網
上載者:User

標籤:Windows   MFC   

一、建立過程 訊息迴圈

1.WinMain首先調用Api函數RegisterClass註冊一個視窗類別,這個類定義

  了視窗重要屬性,如視窗過程地址, 預設背景色, 表徵圖. 通過WNDCLASS結構欄位

來定義,  程式產生一個視窗時,必須制定視窗類別, 在類被使用之前,必須先對其進行註冊,

這就是為什麼RegisterClass在程式的開始即被調用的原因,

2.一旦WNDCLASS被註冊,WinMain講調用最重要的CreateWindow函數產生應用程式

3.一個MFC程式你看不到WinMain函數,他也不調用RegisterClass或CreateWIndow

由於產生沒有WS_VISIBLE所以在CreateWIndow之後要調用ShowWindow

它是視窗可見,並確保WM_PAINT訊息處理常式立刻執行。

4.接下來就是訊息迴圈,為了檢索並調度訊息,WinMain執行一個簡單的反覆調用

GetMessage,TranslateMessage,和DispatchMessage這3個API講函數的while迴圈語句

GetMessage檢查訊息佇列,如果某個訊息是有效,則講它從隊列刪除並複製到msg

否則GetMessage將停留到訊息佇列上知道訊息有效, msg是MSG的一個執行個體

其知道保包含相關的訊息參數,

例如訊息ID和訊息被放置在隊列中的時間,  TranslateMessage函數將一個指示字元鍵的鍵盤

訊息轉換成容易使用的WM_CHAR訊息,DispatchMessage函數則講訊息發送給視窗過程,

5.訊息迴圈一直迴圈到GetMessage函數返回0值時結束, 這個只有WM_QUIT訊息從訊息佇列中

被檢索到時才發生,.這是WinMain結束,程式終止.

6.由DispatchMessage函數調度的訊息將生產對視窗過程WinProc的調用, 其他沒有被處理

的訊息傳遞給了DefWindowProc函數進行預設處理,

7.視窗類別是Windows系統的資料結構, 視窗類別包含視窗重要訊息,如視窗風格,視窗訊息處理WndProc

視窗的游標等




二、應用程式物件

  1. MFC應用核心是基於CWinApp類對象,CWinApp提供了訊息迴圈並來檢索訊息,

    並將訊息調度給應用程式視窗

   2.覆蓋ExitInstance在應用程式終止後調用,是釋放資源的完美地方,覆蓋要確保調用基類






三、架構視窗對象

1.MFC的CWnd類機器衍生類別為視窗或應用程式建立的視窗提供物件導向介面

視窗類別是從CMainWindow是從CFrameWnd類派生的,後者又是從CWnd派生

CFrameWnd模仿框視窗的行為,

2.客戶區和非客戶區

視窗的非客戶區包含標題列.功能表列,視窗邊框

客戶區指除非客戶區之外的地區,都是客戶區

3.視窗樣式 是影響視窗外觀和行為的一組屬性集合

採用WS為首碼的宏定義

WS_BORDER建立有邊框的視窗

WS_CAPTION建立有標題列的視窗

WS_CHILD建立一個子視窗 等等...

4.視窗擴充樣  一般用WS_EX_為首碼的宏定義

WS_EX_CLIENTEDGE指明視窗具有3D外觀

WS_EX_APPWINDOW當視窗可見時,將視窗放置在工作列

WS_EX_CONTROLPARENT允許使用者TAB鍵遍曆子視窗 ...



四、視窗的Z-Order與桌面視窗

  1. 視窗Z-Order的概念

螢幕一般X軸Y軸表示平面位置,而以Z軸表示前後位置,X軸從左向右

Z軸從螢幕內指向螢幕外,Z-Order值表示視窗的前後順序,Z-Order值越大,在螢幕顯示越靠近使用者

2.桌面視窗

桌面視窗就是系統案頭對應的視窗,桌面視窗與其它的關係是,桌面視窗在最底層,其它視窗

在它之上,所有它的Z-Order值最小。



五、父視窗和所有者視窗

  1. 父視窗與所有者視窗的名次

視窗之間有兩種關係, 一種是owner-owner關係 和 parent-child關係

前者是所有/被所有關係, 後者是父/子關係, owner稱為所有視窗,parent為父視窗


2.父視窗與子視窗的關係

子視窗是嵌在父視窗上面的,就像是釘在父視窗上面的感覺,子視窗顯示地區不能超過

父視窗的顯示地區,超出的不顯示,當父視窗被隱藏時,它的所有子視窗也被隱藏,

當父視窗銷毀時,它擁有所有子視窗都被銷毀.


3.所有者視窗與被所有者視窗的關係

被所有的視窗永遠顯示在所有者視窗之上,當所有者視窗最小化時,被所有視窗會自動隱藏

當所有視窗銷毀時,被所有的視窗就會被銷毀, 當所有者視窗移動時,被所有的視窗不一起移動,

被所有視窗可以在所有者視窗地區之外的位置顯示.






Windows核心編程(1)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.