嫌になるくらい忘れるのでメモ。
VC++のMFCダイアログにおいて「Enterキー」「ESCキー」でダイアログが終了するの抑制する。
1)ClassWizardから「PreTranslateMessage」を追加する。
2)次の処理をPreTranslateMessageメソッド内に追加する
・ウィンドウメッセージが「WM_KEYDOWN」で、入力が「VK_RETURN(Enterキー)」「VK_ESCAPE(ESCキー)」のとき、TRUEを返してキーイベントをすっ飛ばす。
▼--- ここから ---▼
▲--- ここまで ---▲
Enterキーで次の入力項目に遷移したいときは、「return TRUE」の前に処理を入れる。
つーか、基本的なことを忘れすぎだ、俺。
あと余談だけど、if文とかの{ }の付け方って(1)と(2)ってどっちが主流?
ちなみに俺は(1)派。
VC++のMFCダイアログにおいて「Enterキー」「ESCキー」でダイアログが終了するの抑制する。
1)ClassWizardから「PreTranslateMessage」を追加する。
2)次の処理をPreTranslateMessageメソッド内に追加する
・ウィンドウメッセージが「WM_KEYDOWN」で、入力が「VK_RETURN(Enterキー)」「VK_ESCAPE(ESCキー)」のとき、TRUEを返してキーイベントをすっ飛ばす。
▼--- ここから ---▼
BOOL CSAMPLEDlg::PreTranslateMessage(MSG* pMsg) { // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください if(pMsg->message == WM_KEYDOWN) { switch(pMsg->wParam) { case VK_RETURN: // Enterキー case VK_ESCAPE: // ESCキー // Enterキー、ESCキーでの終了を抑制 return TRUE; default: break; } } return CDialog::PreTranslateMessage(pMsg); }
▲--- ここまで ---▲
Enterキーで次の入力項目に遷移したいときは、「return TRUE」の前に処理を入れる。
つーか、基本的なことを忘れすぎだ、俺。
あと余談だけど、if文とかの{ }の付け方って(1)と(2)ってどっちが主流?
ちなみに俺は(1)派。
(1) if(hoge == hage) { ... } (2) if(hoge == hage){ ... }