2011-01-07 12 views
3

Ich habe eine Delphi 6 Pro-Anwendung, die bestimmte Dinge tut, wenn die Anwendung minimiert wird. Ich arbeite im OnMinimize() - Ereignis, das zu einer TApplicationEvents-Komponente gehört. Es funktioniert hervorragend, wenn die Minimieren-Schaltfläche im Hauptfenster verwendet wird. Wenn jedoch die Windows XP-Schaltfläche "Desktop anzeigen" zum Minimieren aller aktiven Anwendungen verwendet wird, wird das OnMinimize() - Ereignis nicht ausgelöst. Gibt es eine Möglichkeit, das zu beheben, oder muss ich im WndProc() etwas Unordentliches tun?Delphi 6 - TApplicationEvents.OnMinimize wird nicht von "Show Desktop" ausgelöst

- roschler

Antwort

7

hinzufügen

protected 
    { Private declarations } 
    procedure WMSize(var Message: TWMSize); message WM_SIZE; 

wo

procedure TForm1.WMSize(var Message: TWMSize); 
begin 
    if Message.SizeType = SIZE_MINIMIZED then 
    beep; 
end; 

Alternativ kann natürlich können Sie nur tun

protected 
    { Private declarations } 
    procedure WndProc(var Message: TMessage); override; 

wo

procedure TForm1.WndProc(var Message: TMessage); 
begin 
    inherited; 
    case Message.Msg of 
    WM_SIZE: 
     if Message.WParam = SIZE_MINIMIZED then 
     beep; 
    end; 
end; 
1

Wenn ich mich richtig erinnere, ist das Problem mit Delphi-Anwendungen, dass die Hauptnachrichtenhandler nicht auf die „main“ Fenster gehört, sondern zu TApplication. Verwenden Sie auf jeden Fall etwas wie WinSight, um zu wissen, welche Nachrichten an was gesendet werden, wenn Show Desktop ausgelöst wird.

1

Neben den Antworten, die hoffentlich Ihr Problem lösen, fand ich diese Beschreibung auf der Microsoft-Website:

standardmäßig die Schnellstartleiste enthält auch zwei Sondertasten. Klicken Sie auf die Schaltfläche Desktop anzeigen Bild des Symbols Desktop anzeigen zu vorübergehend alle geöffneten Fenster ausblenden und den Desktop anzeigen; Klicken Sie erneut auf die Schaltfläche , um alle Fenster erneut anzuzeigen.

Von diesem sammle ich den Show-Desktop tatsächlich nicht minimiert die Fenster überhaupt; macht sie nur unsichtbar (indem man die Z-Reihenfolge des Desktops zu oberst macht). In diesem Fall ist es korrekt, dass Ihre Anwendung die Minimize-Nachricht nicht empfängt.

+0

Nun, ich dachte auch zuerst, aber dann habe ich 'IsIconic' überprüft, was * tatsächlich * nach Win + D (unter Windows 7) wahr ist. –