Breakキーに対するキーコードは?

[戻る]
たま 2001/10/23(火) 09:51:40
MFC AppWizardでダイアログの画面を作成しています。
下記のようにPreTranslateMessageで以下のようにreturnキーとescapeキーが押されてもダイアログが
終了しないように回避処理を行っています。
しかしBreakキーのキーコードがわからずBreakキーが押されるとダイアログが落ちてしまいます。
MSDNをひと通り探しましたが該当するものがありません。VK_BREAKでもありませんでしたし・・・
どなたかBreakキーのキーコードを教えてください。宜しくお願いします。


BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg) 
{
    
// ■追加 リターンキー、エスケープキーの終了処理回避/////////////////////////////////////
if (pMsg->message == WM_KEYDOWN)
{
    switch (pMsg->wParam)
    {
    case VK_RETURN:
        return TRUE;    // TRUEで本来の機能を抑止。returnキーの抑止
        break;
    case VK_ESCAPE:
        return TRUE;    // TRUEで本来の機能を抑止。Escキーの抑止
        break;
    }
}

Bun 2001/10/23(火) 10:19:12
> Breakキーが押されるとダイアログが落ちてしまいます。

Breakキーってどーれですか?

落ちるとは?エラーが発生するのですか?

たま 2001/10/23(火) 11:43:04
今気づいたのですが、機種によって違いますね。
手元にあるPCだと、ディスクトップでCtrl+Pause。
ノートでFn+Pauseでブレイクキーになります。
言葉足らずでした。落ちるというのはブレイクキーを押したら、
OnCancelやダイアログ右上のXボタンを押したときのように
ダイアログが終了してしまうことをいいました。

PreTranslateMessageの中で、次のようなコードを書いて
押されたボタンの戻り値を確認しようとしていたのですが、
(Escキーが押された場合27、Enterだと13といった感じ)
Fn+Pauseだと数値が表示されないのでブレイクキーそのものに
対応するキーコードはないようですね。
ブレイクキーに対応しようとするとキーコードの組み合わせしか
方法がない・・ということですかね?


CString ss;
ss.Format("%d",pMsg->wParam);
MessageBox(ss,"",MB_OK);

Bun 2001/10/23(火) 13:11:03
私の環境はデスクトップなのでCtrl+Pauseを調べました。

case WM_KEYDOWN:
  TRACE("0x%02x", pMsg->wParam); // <---試して見てください
  return TRUE;

メッセージボックスだとデバッグしずらかったので(^^;
アウトプットウィンドウに出力しました。

Ctrl+Pause = 0x03 これはwinuser.hで定義されているVK_CANCELでした。

つーことで VK_CANCELの時にreturn TRUEすれば終了しませんでした。

たま 2001/10/23(火) 18:29:51
[[解決]]
Bunさんどうもありがとうございました。
ノートでもVK_CANCELのreturn TRUEで終了処理を回避することができました。

しかし毎日見ているのに作ってみると気づかないものが多いですね。
メッセージボックスでもEscキーやBreakキーで終了してしまうのですから・・・
私はメッセージボックスの確認画面でOKを押された場合、次の処理へすすみ
実際にその処理を実行したかどうかを知るために構造体にint型のメンバを用意
して値を格納していたのですが、これで見直さなければいけなくなりました^^;)

bosscat 2001/10/23(火) 18:39:53
VK_??
って
@[]:;
とかのKey定義されてない気がする
これって日本語Keybord特有なんですか?
少なくともVC++6.0の
WINUSER.H
には
定義されてなかった

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