VCネタ

ダイアログで開発していると、表面に出てこないことがある。
それはESCキーとEnterキー。
何も対策しないと、フォーカスがダイアログに当たっている状態で
ESCとかEnterキーを押すと、ダイアログが閉じてしまうのだ。
これを回避するにはPreTranslateMessageを使う。


BOOL COptionDialog::PreTranslateMessage(MSG* pMsg)
{
  // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
  if(pMsg->message == WM_KEYDOWN){
    if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE){
      return TRUE;
    }
 }
 return CDialog::PreTranslateMessage(pMsg);
}


これでEnter押してもESC押してもDialogが閉じる事は無い。
意外と対策してない場合があるかもしれないので注意。