2017-06-02 1 views
-2

Ich habe viele Stunden auf Google verbracht und habe keine relevanten Ergebnisse zu diesem speziellen Thema gefunden.Überprüfen Sie die aktuelle Anwendung in der Taskleiste geklickt? (C++, Windows API)

Ich habe eine Anwendung Ich möchte minimiert werden, wenn der Benutzer auf es in der Taskleiste klickt (wenn es nicht bereits minimiert ist). Das Problem scheint damit zu tun zu haben, dass das Fenster grenzenlos ist. Wenn ich es auf einen Rahmen einstelle, minimiert es sich einfach, wenn ich es in der Taskleiste anklicke, ohne dass ein Code dazwischenkommt. Aber ich brauche das Fenster randlos, weil ich einen "benutzerdefinierten Rahmen" benutze, der den Clientbereich verwendet.

tl; dr Wie überprüfe ich, ob die aktuelle Anwendung in der Taskleiste angeklickt wird?

Vielen Dank! Samuel

+2

Falsche Frage. Sie möchten wissen, dass Ihr Fenster minimiert werden sollte (oder warum es nicht automatisch minimiert wird), sondern stattdessen nach Ihrer Lösung fragen. Das nennt man [XY-Problem] (https://meta.stackexchange.com/q/66377/205381). – IInspectable

+0

Durch Klicken auf die Taskbar-Schaltfläche werden normale 'WM_SYSCOMMAND'-Benachrichtigungen an das Fenster gesendet, wie' SC_MINIMIZE' und 'SC_RESTORE'. Die Grenze (oder das Fehlen von einem) sollte das nicht beeinflussen. Behandelt Ihr Code diese Nachrichten korrekt, wenn Sie den Rahmen entfernen? –

+0

Ich bin mir nicht sicher, warum ich zwei negative Reputation davon bekommen habe. Es ist eine absolut gültige Frage. Gibt es im Internet keinen Platz? Ich werde nicht von Trollen angegriffen? Naja, zumindest habe ich meine Frage beantwortet und meine Bewerbung minimiert bekommen. Das ist wichtig. –

Antwort

3

Es gibt keine Notwendigkeit, mit der Taskleiste zu basteln.

Stellen Sie sicher, dass Sie die WS_MINIMIZEBOX|WS_MAXIMIZEBOX Stile für Ihr Fenster festgelegt haben. Sonst wird Ihr Fenster WM_SYSCOMMAND mit wParamSC_MINIMIZE und SC_RESTORE nicht behandeln.

Einige Ressource-Editoren wie die in Visual Studio machen es unmöglich, WS_MINIMIZEBOX|WS_MAXIMIZEBOX festzulegen, wenn Sie die Standardfenstergrenze entfernen. Sie können die Stile programmgesteuert folgendermaßen hinzufügen:

DWORD style = GetWindowLong(hwnd, GWL_STYLE); 
SetWindowLong(hwnd, GWL_STYLE, style | WS_MINIMIZEBOX | WS_MAXIMIZEBOX); 
Verwandte Themen