Enterキーの操作処理

[戻る]
バンヴィ 2007/06/18(月) 10:09:02
いつもお世話になっております。
早速質問させていただきます。

作業環境は、 MFC VC++6.0 WindowsXPです。

質問内容
 Enterキーの操作制御についてなのですが、
ダイアログのにある特定のボタンを押下したときのみ、Enterキーを
有効にしたいのですが、どういった記述をすればよいのか分かりません。
ご存知の方、よろしくお願いします。

BOOL CFooDialog::PreTranslateMessage(MSG* pMsg) 
{
 if( pMsg->message == WM_KEYDOWN )
  {
   switch( pMsg->wParam )
    {
    case VK_RETURN:  
     //  独自の処理
      return TRUE;
    default:
      break;
    }
  }
  return CDialog::PreTranslateMessage(pMsg);
}

つばさ 2007/06/18(月) 10:15:28
こんちわ

Enter有効フラグとかいうのを作って
特定ボタン押下時にフラグON

Enter押下時の処理に フラグONなら処理を行う

これでいいのでゎ?

バンヴィ 2007/06/18(月) 10:35:41
つばささん返信ありがとうございます。

>Enter有効フラグとかいうのを作って
>特定ボタン押下時にフラグON
>
>Enter押下時の処理に フラグONなら処理を行う

とのご指摘がありましたので、独自の処理のところに
下記のような記述をしてみたのですが、
フラグがOnになりません。
OnButton()の所で
iOk_Flg = 1
を記述しているのですが、具体的に
どこに記述すればよいのか教えてください。

case VK_RETURN:  
 //  独自の処理
 if (iOk_Flg == 1)
 {
  OnButton1();
 }else{
  MessageBox("Enterは使用できません。", sErr);
 }
return TRUE;

バンヴィ 2007/06/18(月) 11:52:46
[[解決]]
自己解決です。

http://forums.belution.com/ja/vc/000/134/18s.shtml
↑を参考にしました。

//独自の処理の所で
case VK_RETURN:                            
 targetID = ::GetDlgCtrlID(pMsg->hwnd);    // IDを取得する
 if (targetID == IDC_BUTTON1)
 {
  OnButton1();
 }else{
  MessageBox("Enterは使用できません。", sErr);
 }
 return TRUE;            

と記述したところ、思い通りの処理ができました。

大変お騒がせいたしました。

古いスレッドには追加発言できません。