Я подозреваю, что вы действительно хотите, чтобы реагировать на элемент управления, получающий фокус ввода, а не только событие нажатия кнопки.Например, предположим, что пользователь использует кнопку мыши для установки фокуса ввода на элементе управления редактирования, затем вводит и снова щелкает элемент управления для редактирования, пока он в данный момент имеет фокус.Вы, вероятно, не хотите, чтобы текст пользователя был очищен.Или, возможно, они устанавливают фокус ввода с помощью клавиатуры, например, TAB .Опять же, я подозреваю, что вы захотите, чтобы это действие очистило содержимое.
Если мое понимание верно, тогда вы должны прослушать уведомление EN_SETFOCUS
в процедуре вашего диалога WM_COMMAND
обработчик.Это сработает независимо от того, как пользователь фокусируется на элементе управления редактирования, используя мышь или клавиатуру.
В вашем коде вам просто нужно развернуть оператор switch
в WM_COMMAND
:
case IDC_EDIT1:
if(HIWORD(wParam)==EN_SETFOCUS)
{
SetDlgItemText(hwnd, IDC_EDIT1, L"");
}
break;