2017-01-10 3 views
-1

ユーザーがパスワードのテキストフィールドをクリックしたときに通知を受けたい。 enter image description here しかし、私はパスワードテキストフィールドをクリックして実行すると、次の関数が複数回呼び出されます。なぜ私のウィンドウが受け取るen_setfocus 12回

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 ++ caputureは制御メッセージを編集していますが、EN_SETFOCUSはメッセージではなく、編集制御通知です。

+0

ここにあなたの質問に答えるのに十分な情報がありません。あなたはそれをデバッグするために何を試しましたか? Spy ++を使用してメッセージストリームをチェックし、実際に複数のWM_SETFOCUSメッセージが発生しているかどうかを確認しましたか、コードに複数回発生していると思わせるバグがあります。 –

+0

ありませんWM_SETFOCUS – firstaccount

+0

申し訳ありません。 EN_SETFOCUS通知もSpy ++で確認できます。 –

答えて

-1

私は自分で答えを得ました。 編集コントロールはフォーカスを取得するとEN_SETFOCUSを送信し続けます。

関連する問題