お世話になっております。
新規作成でMFCダイアログベースを作成し
そのダイアログにエディットボタンを追加しました。
そのエディットボックス中に Enterキーを押したのですが、
OKボタンが反応してしまいます。
特に設定もしていないのになぜ反応するのでしょうか?
リソースエディタでエディットボックスのになるWant ReturnをTrueに
変更してみましたが、変化があらわれませんでした。
なぜ反応するのか、どうやって対処するのかを教えていただけませんか?
よろしくお願いします。
BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
return TRUE;
return CDialog::PreTranslateMessage(pMsg);
}
>なぜ反応するのか
Windows のダイアログでのごく普通の動作だからです
デフォルトボタンについて調べてみてください
返答していただいてありがとうございます。
他のエディットボックスなどでEnterキーが押された時になにか処理を行い
たい時はPreTranslateMessageに
そのつど処理を追加していくのでしょうか?
>Windows のダイアログでのごく普通の動作だからです
>デフォルトボタンについて調べてみてください
ボタンの設定にあるDefaultButtonはFALSEになっていましたけれど
Enterキーに反応してしまいます。
>他のエディットボックスなどでEnterキーが押された時になにか処理を行いたい時
if(GetFocus()->GetDlgCtrlID() == IDC_EDITx)
{
}
>>Windows のダイアログでのごく普通の動作だからです
>>デフォルトボタンについて調べてみてください
>
>ボタンの設定にあるDefaultButtonはFALSEになっていましたけれど
>Enterキーに反応してしまいます。
これも、
Windows のダイアログでのごく普通の動作だからです
Dialog Box Keyboard Interface について調べてみてください (^^;;;
ついでに、
>リソースエディタでエディットボックスのになるWant ReturnをTrueに
>変更してみましたが、変化があらわれませんでした。
ES_WANTRETURN
This style has no effect on a single-line edit control.
返答して頂いてありがとうございます。
>ES_WANTRETURN
>This style has no effect on a single-line edit control.
MultiLineをTrueにしたらエディットボックスで改行を行うことができました。
>これも、
>Windows のダイアログでのごく普通の動作だからです
>Dialog Box Keyboard Interface について調べてみてください (^^;;;
現在googleで検索中です。
>>他のエディットボックスなどでEnterキーが押された時になにか処理を行いたい時
>if(GetFocus()->GetDlgCtrlID() == IDC_EDITx)
>{
>}
やはりそのように書くのですね。
>現在googleで検索中です。
Windows ダイアログの仕様を調べるのだから、それよりも先に検索すべきもの(MSDN ラ
イブラリ)が手元にあるはずです。
#キーワード欄にDialog Box Keyboard Interface(二重引用符付き)で
>Windows ダイアログの仕様を調べるのだから、それよりも先に検索すべきもの(MSDN ラ
>イブラリ)が手元にあるはずです。
>#キーワード欄にDialog Box Keyboard Interface(二重引用符付き)で
検索したらでてきました。
おかげで納得することができました。
ありがとうございます。