Heim > Backend-Entwicklung > C++ > Hauptteil

Wie können Qt/C-Anwendungen mit Aero Snap, Shadow und Animationen randlose Fenster erreichen?

Linda Hamilton
Freigeben: 2024-10-26 01:53:02
Original
808 Leute haben es durchsucht

How Can Qt/C   Applications Achieve Borderless Windows with Aero Snap, Shadow, and Animations?

Randlose Fenster mit Areo Snap, Shadow und Animation in Qt/C erstellen

In Windows geht ein randloses Fenster mit einem Kompromiss einher: der Verlust von Funktionen wie Aero Shadow, Snap und Minimierungsanimation. Durch die Nutzung der Windows-API ist es jedoch möglich, das nahtlose Erlebnis von Anwendungen wie Office 2013 und Steam zu reproduzieren.

Rand ausblenden

Um den Rand des Fensters zu verbergen, verwenden Sie intercept die WM_NCCALCSIZE-Meldung in der Fensterprozedur.

<code class="cpp">case WM_NCCALCSIZE: {
    if (window->is_borderless) {
        return 0;
    } else {
        return DefWindowProc(hwnd, msg, wparam, lparam);
    }
}</code>
Nach dem Login kopieren

Aktivieren Sie den Aero Shadow

Um den leuchtenden Schatten um das Fenster herum anzuzeigen, verwenden Sie die Funktion DwmExtendFrameIntoClientArea.

<code class="cpp">MARGINS borderless = {1,1,1,1};
DwmExtendFrameIntoClientArea(hwnd, &borderless);</code>
Nach dem Login kopieren

Zusätzliche Funktionen aktivieren

Wenn wir das Verhalten eines randlosen Fensters wie Steam beobachten, können wir feststellen, dass der Schatten am besten mit dem Fensterstil WS_POPUP | funktioniert WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION. Dieser Stil ermöglicht auch Aero Snap, Maximieren und die sanfte Minimierungsanimation.

Zusätzliche Hinweise

  • Der Schatten kann durch transparente Elemente im Client-Bereich sichtbar sein , was ein nicht transparentes Widget oder einen Pinsel dahinter erfordert.
  • Die Werte DWMWA_NCRENDERING_POLICY und DWMWA_ALLOW_NCPAINT in DwmSetWindowAttribute sind normalerweise nicht erforderlich.

Beispielprojekt

Für eine praktische Demonstration laden Sie das bereitgestellte Beispielprojekt herunter. Durch Drücken von F11 wird zwischen randlosem und Fenstermodus umgeschaltet, während F12 den randlosen Schatten aktiviert oder deaktiviert.

Das obige ist der detaillierte Inhalt vonWie können Qt/C-Anwendungen mit Aero Snap, Shadow und Animationen randlose Fenster erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!