Windows sin borde con características aero Snap, animación de minimización y batido. Para superar este desafío, podemos aprovechar el poder de Spy y las llamadas DWMAPI.
manejando wm_nccalcsize mensaje
[&]para ocultar la frontera de la ventana, interceptar el mensaje wm_nccalcsiz WindowProc:
case wm_nccalcsize: { if (window-> is_borderless) { regresar 0; } demás { return defwindowproc (hwnd, msg, wparam, lparam); } }
case WM_NCCALCSIZE: {
if (window->is_borderless) {
return 0;
} else {
return DefWindowProc(hwnd, msg, wparam, lparam);
}
}
para agregar una sombra Aero, use la función dwMextendframeIntoclientAea:
margins Borderless = {1,1, 1,1}; DwMextendframeInToclientAa (hwnd, & borderless);
MARGINS borderless = {1,1,1,1};
DwmExtendFrameIntoClientArea(hwnd, &borderless);
Para que estas características funcionen, el estilo de la ventana debe incluir: ws_popup | Ws_thickframe | Ws_minimizebox | Ws_maximizebox | Ws_caption
con respecto a la transparencia del canal alfa
WS_POPUP | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION
Cuando se usa dwMextendframeIntoclientea, un cuadro pequeño puede ser visible a través de elementos transparentes en el área del cliente. Considere usar un fondo o pincel no transparentes. Ejemplo Project
Un proyecto simple demuestra el uso de estas técnicas. Al presionar F11, alternar entre el modo sin fronteras y la ventana, mientras que F12 alterna y desactiva la sombra Aero.
Conclusion
implementando estos pasos y aprovechando el dwmapi, es posible Para crear ventanas sin borde en QT/C con las características aerodinámicas deseadas. Esto proporciona una experiencia de usuario perfecta y mejorada para sus aplicaciones.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3