アプリ版:「スタンプのみでお礼する」機能のリリースについて

環境:VC6.0、MFC、WinNT4.0
普通のモードレスダイアログを作成して、メニューから呼び出すようにしました。
デフォルトについてくる「OK」「Cancel」ボタンは要らないので削除しました。
ところが、アプリケーションを実行して作成したダイアログを呼び出した後、「Enter」或いは「Esc」キーを押すとダイアログが消えてしまいます。
それが消えないようにしたいのですが、、、
ご指導お願いします。

A 回答 (2件)

派生元(親)のCDialogクラスに、


CDialog::OnOK()
CDialog::OnCancel()
が実装されているからですね。

派生先(子)のCDlgTest(仮名)クラスに、

CDlgTest::OnOK()
{
 // 何もしない
}

CDlgTest::OnCancel()
{
 // 何もしない
}

を追加して、明示的に何もしないようにしています。

--
> デフォルトについてくる「OK」「Cancel」ボタンは要らないので削除しました。

削除の前にダブルクリックで関数を作って、CDialog::~を呼び出している個所をコメントアウト。
という手順が楽です。
    • good
    • 0
この回答へのお礼

その通りでした。OnCancel、OnOKは仮想関数でしたね。
ありがとうございました。

お礼日時:2004/03/09 12:04

私はいつも、


BOOL CXXXDialog::PreTranslateMessage(MSG* pMsg)
{
//// ENTERとESCを無効にする ///////////////////////////
if( pMsg->message==WM_KEYDOWN ) {
switch(pMsg->wParam) {
case VK_RETURN:
case VK_ESCAPE:return TRUE;
}
}

return CDialog::PreTranslateMessage(pMsg);
}

としています。
これでENTERやESCキーを押しても何も起こらなくなります。
    • good
    • 1
この回答へのお礼

いい参考になりました。
どうもありがとうございました。

お礼日時:2004/03/09 12:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!