"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo crear ventanas sin fronteras en Qt/C ++ con características aerodinámicas?

¿Cómo puedo crear ventanas sin fronteras en Qt/C ++ con características aerodinámicas?

Publicado el 2025-02-06
Navegar:311

How Can I Create Borderless Windows in QT/C   with Aero Features?

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.

Último tutorial Más>

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