在组合框上的焦点事件生成两次。 Win桌面API

时间:2018-07-16 12:21:38

标签: c++ winapi

组合框上的焦点事件生成两次。 这是对话框“操作过程”的代码。

INT_PTR DialogBox::ActionProc(
    HWND hwndDlg,
    UINT message,
    WPARAM wParam,
    LPARAM lParam)
{
    switch (message) 
        {
        case WM_COMMAND:
                {
                    switch (LOWORD(wParam))
                        {
                            case COMBOBOX:
                            {
                                if (CBN_SETFOCUS == HIWORD(wParam))
                                {
                                    MessageBox(
                                    hwndDlg,
                                    CString("Test"),
                                    CString("Test"),
                                    (MB_ICONEXCLAMATION | MB_OK));
                                }
                                break;
                            }
                                default:
                                    break;
                        }
                    break;
                }
        default:
            break;
        }
    return INT_PTR(true);    
}

MessageBox获取两次显示(因为焦点事件在组合框上两次生成)。有没有办法只显示一次。

我尝试着重于另一个元素,例如:

INT_PTR DialogBox::ActionProc(
    HWND hwndDlg,
    UINT message,
    WPARAM wParam,
    LPARAM lParam)
{
    switch (message) 
        {
        case WM_COMMAND:
                {
                    switch (LOWORD(wParam))
                        {
                            case COMBOBOX:
                            {
                                if (CBN_SETFOCUS == HIWORD(wParam))
                                {
                                    MessageBox(
                                    hwndDlg,
                                    CString("Test"),
                                    CString("Test"),
                                    (MB_ICONEXCLAMATION | MB_OK));
                                    SendDlgItemMessage(
                                    hwndDlg,
                                    ANOTHER_CONTROL,
                                    WM_SETFOCUS,
                                    0,
                                    0);

                                }
                                break;
                            }
                                default:
                                    break;
                        }
                    break;
                }
        default:
            break;
        }
    return INT_PTR(true);    
}

有人可以告诉我我在做什么错。

这在Windows桌面API中。

0 个答案:

没有答案