Heim >Backend-Entwicklung >C++ >Wie können Qt/C-Anwendungen mit Aero Snap, Shadow und Animationen randlose Fenster erreichen?
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>
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>
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
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!