1.消息處理
我們先看看什么是消息
1.1.獲取消息
想要獲取消息,就必須學會getmessage函數
1.1.1.getmessage函數
有兩個重載版本,它們的作用是一樣的
參數filter可以篩選我們需要的消息類型
我們看看參數filter的取值
當然我們可以使用位運算組合這些值
例如,我們只需獲取鼠標消息的時候,有下面兩個做法
如果我們鍵盤和鼠標消息都想要,那就
1.2.消息結構體
接下來我們好好討論這個消息結構體
struct ExMessage
{USHORT message; // 消息標識union{// 鼠標消息的數據struct{bool ctrl :1; // Ctrl 鍵是否按下bool shift :1; // Shift 鍵是否按下bool lbutton :1; // 鼠標左鍵是否按下bool mbutton :1; // 鼠標中鍵是否按下bool rbutton :1; // 鼠標右鍵short x; // 鼠標的 x 坐標short y; // 鼠標的 y 坐標short wheel; // 鼠標滾輪滾動值,為 120 的倍數};// 按鍵消息的數據struct{BYTE vkcode; // 按鍵的虛擬鍵碼BYTE scancode; // 按鍵的掃描碼(依賴于 OEM)bool extended :1; // 按鍵是否是擴展鍵bool prevdown :1; // 按鍵的前一個狀態是否按下};// 字符消息的數據TCHAR ch;// 窗口消息的數據struct{WPARAM wParam;LPARAM lParam;};};
};
我們先看第一個成員——message
ExMessage msg;msg = getmessage(EX_MOUSE);//篩選了鼠標消息
如果我們篩選的是鼠標消息
那么我們獲得的ExMessage結構體中,結構體message成員就可能是下面這張表的值
我們再看結構體
如果是鼠標消息類型,那么只有鼠標消息結構體有效,其他成員結構體是無效的
如果篩選了鍵盤消息
ExMessage msg;msg = getmessage(EX_KEY);//篩選了鍵盤消息
那么獲得的ExMessage結構體中的message成員就可能是下面這張表的值