2012-03-29 5 views
0

Ich möchte feststellen, ob OnClose ausgelöst wurde über ALT+F4 oder über Wählen Sie "Fenster schließen" aus der Taskleiste der Anwendung. Bis jetzt kann alles, was ich denken kann, wie folgt testen:Unterscheidung von ALT + F4 vs. Taskbar Ereignisse schließen

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

Gibt es einen besseren Weg?

Bonuspunkte: Gibt es eine Möglichkeit, speziell den Windows 7 Taskleiste Fenster schließen Menüpunkt?

+3

Sie können nach 'WM_SYSKEYDOWN' /' VK_F4' lauschen und das Ereignis direkt behandeln, anstatt 'DefWindowProc' daraus ein Standard-Close-Event zu machen. –

+1

Warum kümmert es dich? ... und erinnern Sie sich, es ist möglich, ein Fenster zu schließen, indem Sie ALT + Leertaste + C – Anders

+0

drücken Ich interessiere mich für meine eigenen Gründe. :) –

Antwort

1

WM_CLOSE wird vom Task-Manager gesendet. WM_SYSCOMMAND wird mit dem Parameter SC_CLOSE gesendet, wenn Sie ALT_F4 drücken oder im Systemmenü der Taskleistenschaltfläche.

0

Sie sollten den Hotkey ALT+F4 mit der RegisterHotkey API behandeln. Führen Sie den benutzerdefinierten Code aus, und schließen Sie das Fenster.

+4

Verwenden Sie keine globale Lösung für ein lokales Problem. –

Verwandte Themen