2012-03-29 13 views
0

OnCloseがALT+F4でトリガーされたのか、アプリケーションのタスクバーアイコンから「ウィンドウを閉じる」を選択しているのかを確認したいと思います。これまでのところ、私が考えることができるのは、次のようなテストです:ALT + F4とタスクバークローズイベントを区別する

void ...::OnClose() 
{ 
    if (::GetKeyState(VK_MENU)) 
    { 
      // Alt F4 triggered close 
    } 
} 

もっと良い方法がありますか?

ボーナスポイント:Windows 7のタスクバークローズウィンドウのメニュー項目を特に処理する方法はありますか?

+3

'WM_SYSKEYDOWN' /' VK_F4'をリッスンし、 'DefWindowProc'が標準のCloseイベントにするのではなく、直接イベントを処理することができます。 –

+1

なぜ気にしますか? ALT + Space + Cを押してウィンドウを閉じることができることを覚えておいてください。 – Anders

+0

私自身の理由が気になります。 :) –

答えて

1

WM_CLOSEはタスクマネージャによって送信されます。 AL_S_F4を押すか、タスクバーボタンのシステムメニューからWM_SYSCOMMANDがパラメータSC_CLOSEで送信されます。

0

RegisterHotkey APIを使用してALT+F4ホットキーを処理する必要があります。カスタムコードを実行し、ウィンドウを閉じます。

+4

ローカルの問題にグローバルな解決策を使用しないでください。 –

関連する問題