2009-06-16 3 views

答えて

2

これを行う方法はいくつかあります。次のことが可能です。

  1. はOnCancelハンドラを作成し、
  2. あなたはOnCloseのイベントを処理して、あなたがやりたいことができますキャンセルを通知してやりたいです。
  3. PreTranslateMessageを無効にしてEscキーをチェックして、必要な操作を行うことができます。

コード例については、thisを確認してください。 PreTranslateMessageの例については

、あなたがOnCancelイベントを上書きするだけIDCANCELがフォーカスされたアイテムである場合OnCancel呼び出しで前方に移動することができますthis

+0

OnCloseの(WM_CLOSEの指定されたハンドラ)が呼び出されていませんEscキーを押してください。 –

4

を参照してください。

void CMyDialog::OnCancel(void) 
{ 
    if(GetDlgItem(IDCANCEL) == GetFocus()) 
    { 
     CDialog::OnCancel(); 
     return; 
    } 
} 
1

オーバーライドOnCancelとは、基本クラスの実装を呼び出すことはありません。

あなたが何をしているのか分からない限り、OnCloseの近くに行かないと、Alt-F4とXボタンの動作が壊れる危険性があります。

私はいつもナットをクラックする熱核兵器を使用したとして、このようなもののためのPreTranslateMessageを考えてきましたが、それはあなたのボートを浮遊している場合...

関連する問題