Ich habe ein Top-Level-Fenster, das mit WS_POPUP
/WS_EX_APPWINDOW
erstellt wurde, so dass es Nicht-Standard-Frame verwendet und seine Beschriftung in der Taskleiste angezeigt wird. Noch habe ich benutzerdefinierte WM_NCHITTEST
Handler, wenn das wichtig ist.Gibt es WM_QUERYHIDE/CLOSE oder eine ähnliche Nachricht?
Wenn das Fenster "auf Taskleiste minimiert" ist (vom Bildschirm entfernt) und der Benutzer auf sein Symbol/Beschriftung in der Taskleiste klickt, wird das Fenster WM_QUERYOPEN
Nachricht und wird von DefWindowProc geöffnet.
Aber wenn das Fenster geöffnet wird und Benutzer auf sein Symbol/Beschriftung in der Taskleiste klickt, wird das Fenster nur deaktiviert - ich muss es zusammenbrechen.
Gibt es Meldungen, die von der Shell an das Fenster gesendet werden, wenn sich die Maus in der Taskleiste befindet?
Ich versuche, Standard-Windows-Shell-Verhalten zu reproduzieren - zuerst klicken Sie auf das Fenster der Taskleiste Fenster zeigt das Fenster und zweiten Klick - versteckt es. Der erste Teil (Enthüllung) funktioniert standardmäßig, aber nicht der zweite (Verstecken).
UPDATE: Hier sind Nachrichten, die mein Fenster bekommt, wenn es auf dem Bildschirm und Benutzer klickt auf die Beschriftung in der Taskleiste ist:
<01287> 00150DAE S WM_NCACTIVATE fActive:False
<01288> 00150DAE R WM_NCACTIVATE fDeactivateOK:True
<01289> 00150DAE S WM_ACTIVATE fActive:WA_INACTIVE fMinimized:False hwndPrevious:(null)
<01290> 00150DAE R WM_ACTIVATE
<01291> 00150DAE S WM_ACTIVATEAPP fActive:False dwThreadID:000041EC
<01292> 00150DAE R WM_ACTIVATEAPP
<01293> 00150DAE S WM_KILLFOCUS hwndGetFocus:(null)
<01294> 00150DAE R WM_KILLFOCUS
<01295> 00150DAE S WM_IME_SETCONTEXT fSet:0 iShow:C000000F
<01296> 00150DAE S WM_IME_NOTIFY dwCommand:IMN_CLOSESTATUSWINDOW dwCommand:00000001 dwData:00000000
<01297> 00150DAE R WM_IME_NOTIFY
<01298> 00150DAE R WM_IME_SETCONTEXT
Fenster Stile: WS_POPUP | WS_VISIBLE | WS_SYSMENU
Fenster ex-Stile: WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_APPWINDOW
Wenn das wichtig ist, sieht das Fenster so aus:
Das ist nur ein Test.
Ich würde annehmen, dass [WM_SIZE] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms632646.aspx) zu spät gesendet wird (dh wenn das Fenster bereits minimiert wurde) , aber möglicherweise [WM_WINDOWPOSCHANGING] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms632653.aspx) könnte hilfreich sein, mit dem undokumentierten 'SWP_STATECHANGED' Flag. – IInspectable
Wenn das Fenster auf dem Bildschirm angezeigt wird und Sie auf sein Symbol in der Taskleiste klicken, ändert sich seine Position nicht. Und tatsächlich sehe ich keine WM_POSWINDOWCHANGING Nachrichten darauf. Nur WM_ACTIVATE, da der Fokus vom Fenster zur Taskleiste geht. –
Nicht sehr wahrscheinlich, ohne ein Systemmenü, aber erhält Ihr Fenster eine [WM_SYSCOMMAND] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms646360.aspx) Nachricht? – IInspectable