为什么我的 windows 收到 en_setfocus 12 次

why my windows receive en_setfocus 12 times

我想在用户单击密码文本字段时收到通知。 但是当我单击密码文本字段时,会多次调用以下函数:

void CUserDlg::OnSetfocusPasswordEdit()
 {
 // TODO: Add your control notification handler code here
    cout << "focus on password text field";
 }

为什么会这样? 我也试过了:

LRESULT CFakeUserDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{

// TODO: Add your specialized code here and/or call the base class
switch (message)
{
  case WM_COMMAND:
    switch (LOWORD(wParam))
    {
        case IDC_PASSWORD_EDIT:
        if (HIWORD(wParam) == EN_SETFOCUS)
        {
            cout << "";
            
        }
        cout << "";
        break;
    }
    .
    .
    .

当我只单击文本字段一次时,这种情况也会发生很多次。

我刚试过spy++,但是显示spy++捕获编辑控件消息,但是EN_SETFOCUS不是消息,是编辑控件通知。

我自己得到了答案。 编辑控件在获得焦点时会继续发送 EN_SETFOCUS。