-1
ユーザーがパスワードのテキストフィールドをクリックしたときに通知を受けたい。 しかし、私はパスワードテキストフィールドをクリックして実行すると、次の関数が複数回呼び出されます。なぜ私のウィンドウが受け取る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
はメッセージではなく、編集制御通知です。
ここにあなたの質問に答えるのに十分な情報がありません。あなたはそれをデバッグするために何を試しましたか? Spy ++を使用してメッセージストリームをチェックし、実際に複数のWM_SETFOCUSメッセージが発生しているかどうかを確認しましたか、コードに複数回発生していると思わせるバグがあります。 –
ありませんWM_SETFOCUS – firstaccount
申し訳ありません。 EN_SETFOCUS通知もSpy ++で確認できます。 –