enterを押すと終了する


七色の王子様  2007-09-04 21:49:50  No: 66196  IP: 192.*.*.*

ダイアログベースのアプリをつくったのですが、
特に書いた覚えのない動作をしてこまっています。
それはダイアログが立ち上がってるときに「enter」
を押すと終了してしまうのです。
どうしたら防ぐことができるのですか?
環境
VC2005
MFC

編集 削除
瀬戸っぷ  2007-09-04 23:23:09  No: 66197  IP: 192.*.*.*

ダイアログの規定の動作だったように気もしますが。

とりあえず、
http://techtips.belution.com/ja/vc/0015/
が参考になるかと。

編集 削除
七色の王子様  2007-09-04 23:41:48  No: 66198  IP: 192.*.*.*

これはOKとキャンセルを
押された時のコードのようなきがしますが?
私がいっているのはenterなのですが?
違いますでしょうか?

編集 削除
wclrp ( 'o')  2007-09-05 00:04:17  No: 66199  IP: 192.*.*.*

あるじゃん。

BOOL CxxxxDialog::PreTranslateMessage(MSG* pMsg)
{
    if(pMsg->message == WM_KEYDOWN) {        // キーが押された?
        if(pMsg->wParam == VK_RETURN) {      // リターンキー?
            return FALSE;
        }
        else if(pMsg->wParam == VK_ESCAPE) {  // エスケープキー?
            return FALSE;
        }
    }

    return CDialog::PreTranslateMessage(pMsg);
}

return FALSEか、TRUEかで微妙に動作違うよ。

OKボタンにフォーカスがあるときに
スペースキー押したときなどは閉じてしまうけどね。

編集 削除
七色の王子様  2007-09-05 00:14:12  No: 66200  IP: 192.*.*.*

これを追加しようとするとエラーがでてしまいます。
メッセージマップに何か追加してやらなければいけないのでしょうか?

編集 削除
wclrp ( 'o')  2007-09-05 00:45:09  No: 66201  IP: 192.*.*.*

メッセージマップはいらない。
エラーって何だよ。

編集 削除