Création de fenêtres sans bordure avec Areo Snap, Shadow et Animation dans Qt/C
Sous Windows, une fenêtre sans bordure comporte un compromis : la perte de fonctionnalités telles que l'ombre Aero, l'accrochage et l'animation de minimisation. Cependant, il est possible de reproduire l'expérience transparente observée dans des applications comme Office 2013 et Steam en tirant parti de l'API Windows.
Masquer la bordure
Pour masquer la bordure de la fenêtre, interceptez le message WM_NCCALCSIZE dans la procédure de fenêtre.
<code class="cpp">case WM_NCCALCSIZE: { if (window->is_borderless) { return 0; } else { return DefWindowProc(hwnd, msg, wparam, lparam); } }</code>
Activez Aero Shadow
Pour afficher l'ombre lumineuse autour de la fenêtre, utilisez la fonction DwmExtendFrameIntoClientArea.
<code class="cpp">MARGINS borderless = {1,1,1,1}; DwmExtendFrameIntoClientArea(hwnd, &borderless);</code>
Activer des fonctionnalités supplémentaires
En observant le comportement d'une fenêtre sans bordure comme Steam, nous pouvons déterminer que l'ombre fonctionne mieux avec le style de fenêtre WS_POPUP | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION. Ce style permet également l'accrochage Aero, la maximisation et l'animation de réduction fluide.
Notes supplémentaires
Exemple de projet
Pour une démonstration pratique, téléchargez l'exemple de projet fourni. Appuyez sur F11 pour basculer entre les modes sans bordure et fenêtré, tandis que F12 active ou désactive l'ombre sans bordure.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!