INT_PTR CALLBACK DialogProc(HWND hwndDlog, UINT uMsg, WPARAM wParam, LPARAM lparam) {//消息回調函數 switch (uMsg) { case WM_COMMAND: if (LOWORD(wParam) == IDOK) { float left1 = GetDlgItemFlaot(hwndDlog, IDC_LEFT1); float right1 = GetDlgItemFlaot(hwndDlog, IDC_RIGHT1); SetDlgItemFloat(hwndDlog, IDC_RESULT1, left1 + right1); }
if (LOWORD(wParam) == IDCANCEL) { EndDialog(hwndDlog, IDCANCEL); } break; } return FALUSE; }
WM_COMMAND: 來自菜單項,按鈕控件或者快捷鍵等等。
在這里也就是為了接收在頁面當中的操作帶來的消息,,即解析並匹配出相同的消息並執行對應的操作.
INT_PTR CALLBACK msgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: SetWindowText(hwnd, "簡單的"); break; case WM_CLOSE: EndDialog(hwnd, WM_CLOSE); break; case WM_LBUTTONDOWN: { char s[256]; int x = LOWORD(lParam); int y = HIWORD(lParam); sprintf(s, "鼠標左鍵點擊:x:%d,y:%d", x, y); SetWindowText(hwnd, s); } break; } return FALSE; }
這里由於鼠標左鍵按下而對應的WM_LBUTTONDOWN消息則不屬於WM_COMMAND所包含的內容范疇。
可以這樣理解,當按下一個確定按鈕, 由於這個按鈕有對應的ID,所以在響應的時候會到WM_COMMAND中尋找對應的ID產生的消息。
但是當點擊鼠標,或者鍵盤的時候,沒有ID與它對應,但是響應的有事件與此對應, 即WM_LBUTTONDOWN。