2012-04-06 2 views
3

Ich benutze Qt, was ich tun möchte ist, benutzerdefinierte Popup über das Symbol in der Taskleiste in Windows anzuzeigen. Ich kann Symbolkoordinaten erhalten, indem ich geometry() und die Höhe der Taskleiste benutze, indem ich den Unterschied zwischen screenGeometry() und availableGeometry() feststelle. So kann das Popup korrekt zugeordnet werden und überlappt die Taskleiste nicht für verschiedene Taskleistenausrichtungen (z. B. wenn die Taskleiste auf der linken Seite oder oben auf dem Bildschirm ist).Wie erkennen Höhe und Ausrichtung der Taskleiste in Windows mit Autohide-Enabed?

Das Problem beginnt, wenn Autohide der Taskleiste aktiviert ist, dann scheinbar verfügbarGeometry gibt den gleichen Wert wie screenGeometry zurück, und ich kann die Höhe der Taskleiste nicht mehr finden. Dies führt dazu, dass sich das Popup mit der Taskleiste überlappt oder sogar an der falschen Stelle angezeigt wird.

Meine Frage ist: Wie kann ich die Ausrichtung und Größe der Taskleiste in Windows erkennen, wenn die automatische Ausblendung aktiviert ist? Sollte ich eine Winapi-Funktion verwenden, oder kann ich das nur in Qt tun (bevorzugt)?

Antwort

3

1) Autohide Zustand Sie dies mit Check: http://msdn.microsoft.com/en-us/library/bb787947(v=vs.85).aspx 2) und finden Sie Breite/Höhe/Orientierung mit diesem: http://msdn.microsoft.com/en-us/library/bb787953(v=vs.85).aspx

Hoffnung, das hilft. Ja, das sind WinAPI-Funktionen, daher sollten Sie diesen Code nur in "#ifdef Q_OS_WINDOWS" verwenden - wenn Sie auch unter Linux kompilieren möchten.

+0

Sieht gut aus, danke Raxillian. Ein anderes Problem, das ich habe, ist zu erkennen, ob die Taskleiste im Autohide-Modus derzeit sichtbar oder verborgen ist. Der Autohide-Status sagt mir nur, ob die Auto-Hide-Einstellung aktiviert ist oder nicht, gibt mir jedoch keine Informationen darüber, ob es zu gegebener Zeit sichtbar ist – tomak

Verwandte Themen