MFC學習(四) 訊息機制
1 訊息機制的要點:
訊息佇列:先進先出
訊息迴圈:通過迴圈while,不斷的從訊息佇列中取得隊首訊息,並分發訊息。
訊息處理:根據不同的訊息型別做不同的處理
事件:事件響應函式
2 訊息機制
_tWinMain
{
// 註冊視窗類
if(!AppRegisterClass(hInstance)) // hInstance 是應用程式控制程式碼,把這個和winproc註冊上。
{
return (FALSE);
}
// 初始化應用程式視窗
if (!InitInstance (hInstance, nCmdShow)) // 註冊之後開始初始化應用視窗(createWindow得到g_hWnd ;ShowWindow(); UpdateWIndow)_)
{
return FALSE;
}
// 訊息迴圈
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) //定義訊息處理函式
wndProc會根據message型別呼叫對應的事件響應函式。
onDraw () // 每次重新整理的時候都會重新繪製。
對於每一個正在執行的Windows應用程式,系統為其建立一個"訊息佇列",也就是應用程式佇列
DispatchMessage會將訊息傳遞給視窗函式,也就是WndProce函式。
WndProc是一個回撥函式,在註冊視窗時通過wcex.lpfnWndProc將其傳遞給了OS,所以DispatchMessage分發訊息後,OS會呼叫
Wndproc去處理。
訊息的定義和型別:
windows訊息都以WM_為字首,WM_PAINT.
typedef struct tagMsg
{
HWND hwnd; //接受該訊息的視窗控制程式碼
UINT message; //訊息常量識別符號,也就是我們通常所說的訊息號
WPARAM wParam; //32位訊息的特定附加資訊,確切含義依賴於訊息值
LPARAM lParam; //32位訊息的特定附加資訊,確切含義依賴於訊息值
DWORD time; //訊息建立時的時間
POINT pt; //訊息建立時的滑鼠/游標在螢幕座標系中的位置
}MSG;
訊息主要有3種型別:
A: 命令訊息:
B: 標準視窗訊息:
C: Notification:
佇列訊息和非佇列訊息: 按照是否需要放入隊裡
POSMessage 與 SendMessage:
POSMessage:傳送到訊息對列
SendMessage:非對列訊息。直接傳送視窗,等待執行結束。
相關文章
- MFC 訊息對映機制詳解
- MFC訊息響應機制分析 (轉)
- IOS學習之NSNotificationCenter訊息機制iOS
- OC訊息機制,訊息轉發機制
- Android學習系列(7)--App訊息通知機制AndroidAPP
- 訊息機制
- iOS訊息機制iOS
- SAP訊息機制
- 訊息機制篇——初識訊息與訊息佇列佇列
- JMS java 訊息機制Java
- Windows訊息機制概述Windows
- Android訊息機制Message訊息池Android
- 深入解析MFC訊息響應和訊息路由路由
- MFC六大核心機制之五、六:訊息對映和命令傳遞
- 學習 Android Handler 訊息機制需要注意這些問題!Android
- Rabbitmq可靠訊息投遞,訊息確認機制MQ
- Android訊息傳遞之Handler訊息機制Android
- flutter 訊息傳遞機制Flutter
- android訊息機制—HandlerAndroid
- RabbitMQ 訊息確認機制MQ
- 理解 Android 訊息機制Android
- 重拾 ObjC 訊息機制OBJ
- 簡析Windows訊息機制Windows
- Kafka 訊息儲存機制Kafka
- Android訊息機制HandlerAndroid
- Android 之訊息機制Android
- Handler訊息傳遞機制
- Android的訊息機制Android
- WebRTC中的訊息機制Web
- WTL的訊息機制 (轉)
- OS學習筆記四:同步機制筆記
- Android非同步訊息機制Android非同步
- Android訊息機制Handler用法Android
- 【RocketMQ】訊息的刷盤機制MQ
- runtime那些事(訊息機制)
- Android 訊息機制詳解Android
- windows訊息機制與例項Windows
- Android訊息機制(七) RxjavaAndroidRxJava