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。

原文地址:https://www.cnblogs.com/jianmoxiansheng-Guo/p/11941449.html