Win32 Windows編程 五

來源:互聯網
上載者:User

標籤:windows   編程   win32   應用程式   message   

一 Win32訊息機制

1 訊息機制

過程驅動:程式是按照我們預先定義好的順序執行,每執行一步,下一步都已經按照預定的順序繼續執行,直到程式結束

       事件驅動: 程式的執行順序是無序的。某個事件點所執行的代碼,是由外界通知。由於我們無法決定使用者執行順序,所以代碼的執行也是無序

Win32的訊息機制 - 事件驅動

2 Win32訊息程式

2.1 Win32 視窗註冊

2.2 Win32視窗建立

2.3 Win32訊息迴圈

2.3.1 GetMessage


BOOL GetMessage(  LPMSG lpMsg,         // message information 存放擷取到的訊息資料  HWND hWnd,           // handle to window 擷取訊息的視窗控制代碼  UINT wMsgFilterMin,  // first message訊息過濾器的起始訊息
  UINT wMsgFilterMax   // last message訊息過濾的終止訊息
);
返回值: 成功擷取訊息返回TRUE, 但是當擷取到 WM_QUIT訊息時 返回FALSE
PostQuitMessage : 發送一條WM_QUIT 訊息

MSG - 由系統填寫關於訊息的參數

hWnd - GetMessage會根據hWnd值,接收由hWnd指定的視窗的訊息

wMsgFilterMin wMsgFilterMax - 訊息過濾器 要求GetMessage接收指定範圍的訊息

2.3.2 DispatchMessage

LRESULT DispatchMessage(  CONST MSG *lpmsg   // message information);
根據訊息資料內的視窗控制代碼,找到這個視窗的訊息處理函數, 調用函數,進行訊息處理,如果訊息結構中的hWnd為NULL,將不做任何處理

2.3.3 TranslateMessage

BOOL TranslateMessage(  CONST MSG *lpMsg   // message information);
將鍵盤訊息轉換成字元訊息

1、首先檢查是否是鍵盤按鍵訊息

2、如果發現是按鍵訊息,將根據按鍵產生一個字元訊息,在下一個GetMessage執行時會收到字元訊息

3、如果未發現按鍵訊息,不做任何處理

2.4 Win32基本訊息

2.4.1 WM_DESTROY ::視窗銷毀時的訊息,可以做退出或善後處理

2.4.2 WM_CREATE :  視窗建立訊息,是在視窗建立後,視窗處理函數收到的第一條訊息,可以在這個訊息內做資料初始化/建立子視窗等

2.4.3 WM_SIZE:當視窗大小發生變化時,會收到這個訊息。可以在這個訊息中調整視窗的布局

wParam - SIZE發生變化時的標識

LOWORD(lParam) 客戶區的寬

HIWORD(lParam) 客戶區的高

       2.4.4  WM_SYSCOMMAND:系統命令訊息,當點擊系統功能表和按鈕時會收到這個訊息,可以再訊息中,提示使用者儲存資料等。

wParam 系統命令類型

LOWORD(lParam) 滑鼠x座標

HIWORD(lParam) 滑鼠y座標

       2.4.5  WM_ACTIVEAPP:應用程式啟用

       2.4.6 WM_PAINT 繪圖訊息

       2.4.7 鍵盤訊息

       2.4.8 鍵盤訊息

               2.4.9 WM_TIMER 定時器訊息

2.5 訊息結構

MSG - 訊息結構

typedef struct tagMSG {  HWND   hwnd; //訊息發生的視窗  UINT   message; //訊息ID  WPARAM wParam; //訊息參數  LPARAM lParam; //訊息參數  DWORD  time; //訊息發生的時間  POINT  pt; //訊息發生時滑鼠的位置} MSG, *PMSG; 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.