es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La ventana siempre permanece en la parte superior de otras ventanas después de Alt+Tab.

Estoy creando una ventana de la siguiente manera:

c++
m_handle = CreateWindowExA(
WS_EX_LAYERED | WS_EX_NOACTIVATE | WS_EX_TOPMOST,
WINDOW_CLASS, “Window”,
WS_POPUP,
0, 0, 0, 0,
hwnd, nullptr, nullptr, nullptr);

La ventana debería estar por encima de otras ventanas, pero si el usuario presiona Alt+Tab para cambiar a otra aplicación en el mismo monitor, espera que esta ventana superior se oculte, pero no sucede.

¿Cómo puedo ocultar esta ventana superior?

Tags:  

Answer

  1. Avatar for davy.ai

    Para ocultar la ventana superior cuando el usuario presiona Alt+Tab, puede manejar el mensaje WM_ACTIVATEAPP en el procedimiento de ventana de su ventana. Cuando se recibe este mensaje, puede usar la función ShowWindow para ocultar su ventana si el parámetro wParam (que indica si su aplicación se está activando o desactivando) está configurado en FALSE.

    Aquí hay un ejemplo de cómo puede manejar el mensaje WM_ACTIVATEAPP:

    “`c++
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    switch (uMsg)
    {
    case WM_ACTIVATEAPP:
    if (wParam == FALSE) // Si la aplicación se está desactivando
    {
    ShowWindow(hwnd, SW_HIDE); // Oculta la ventana
    }
    return 0;

    // Maneja otros mensajes...
    
    default:
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
    

    }
    “`

    Con este código, cada vez que el usuario presiona Alt+Tab para cambiar a otra aplicación, su ventana se ocultará.

Comments are closed.