WM_COMMAND 和 WM_LBUTTONDOWN 的區別


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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM