Windows 如何将LBtnMouseDown事件添加到编辑控件

Windows 如何将LBtnMouseDown事件添加到编辑控件,windows,winapi,Windows,Winapi,当编辑控件上出现“LBUTTONDOWN”时,请清空文本框。 我知道如何清空文本框,但我不知道添加此事件的位置 我的对话框功能: INT CALLBACK dlgProc(HWND hwnd, unsigned int msg, WPARAM wp, LPARAM lp){ switch(msg){ case WM_INITDIALOG: SetDlgItemText(hwnd, IDC_EDIT1, L"Please enter the txt");

当编辑控件上出现“LBUTTONDOWN”时,请清空文本框。
我知道如何清空文本框,但我不知道添加此事件的位置

我的对话框功能:

INT CALLBACK dlgProc(HWND hwnd, unsigned int msg, WPARAM wp, LPARAM lp){
    switch(msg){
    case WM_INITDIALOG:
        SetDlgItemText(hwnd, IDC_EDIT1, L"Please enter the txt");
        break;
    case WM_COMMAND:
        switch(LOWORD(wp)){
        case BTN_EXIT:
            DestroyWindow(hwnd);
            break;
        case IDC_BUTTON1:
            int len = GetWindowTextLength(GetDlgItem(hwnd,IDC_EDIT1));
            if(len > 0){
                TCHAR *buff = new TCHAR[len+1];
                GetDlgItemText(hwnd, IDC_EDIT1, buff, len+1);
                MessageBox(NULL,buff,L"Error message",MB_OK);
                delete buff;
            }
            break;
        }
        break;
    case WM_CLOSE:
        DestroyWindow(hwnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return false;
    }
    return true;
}

我猜想您真正想要的是响应接收输入焦点的控件,而不仅仅是按钮按下事件。例如,假设用户使用鼠标按钮在编辑控件上设置输入焦点,然后键入,然后再次单击编辑控件,同时该控件当前具有焦点。您可能不希望清除用户的文本。或者他们可以使用键盘设置输入焦点,例如TAB。我再次怀疑,你会希望通过这一行动来清除内容

假设我的理解是正确的,那么您应该在对话框过程的处理程序中侦听通知。无论用户如何使用鼠标或键盘将焦点转移到编辑控件,都会触发此操作

在代码中,只需在
WM_命令中展开
开关
语句即可:

case IDC_EDIT1:
    if(HIWORD(wParam)==EN_SETFOCUS)
    {
        SetDlgItemText(hwnd, IDC_EDIT1, L"");
    }
    break;

你可以写一个简单的例子,或者编辑我的代码并输入新的代码。