Cómo usar la WinAPI para gestionar el modo de pantalla completa en windows la ventana ?

Aquí está mi problema :

Tengo una aplicación con la que tiene que ser a pantalla completa.
Yo uso ChangeDisplaySettings() función (winuser.h) con el CDS_FULLSCREEN valor para poner en ella mi ventana a modo de pantalla completa cuando se recibe una WM_ACTIVATE con (wParam == WA_ACTIVE || wParam == WA_CLICKACTIVE) :

DEVMODE dmScreenSettings;
memset (&dmScreenSettings, 0, sizeof (dmScreenSettings));
dmScreenSettings.dmSize = sizeof (dmScreenSettings);   
dmScreenSettings.dmPelsWidth = 1280;
dmScreenSettings.dmPelsHeight = 720;    
dmScreenSettings.dmBitsPerPel = 32;      
dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);

Yo uso la misma función con la CDS_RESET valor para poner de nuevo en modo «normal» cuando se recibe un WM_ACTIVATE con (wParam == WA_INACTIVE) :

ChangeDisplaySettings(&dmScreenSettings, CDS_RESET);

Cuando yo la primera vez que inicie la aplicación, es en pantalla completa.
Puedo usar ALT+TAB para cambiar a otra aplicación en mi equipo. Mi aplicación minimizada en sí. Funciona bien.
Entonces, puedo volver a mi solicitud, y se trata en modo de pantalla completa. De nuevo, funciona bien.
Pero si quiero cambiar a otra aplicación, una vez más, mi aplicación statys en modo de pantalla completa, ocultando todas las demás aplicaciones en mi equipo.

NB : Mi ventana se crea utilizando CreateWindowEx() la función con los parámetros siguientes :

DWORD dwExStyle = WS_EX_TOPMOST;
DWORD dwStyle = WS_VISIBLE | WS_POPUP;

1) hay otra manera de utilizar ChangeDisplaySettings() para cambiar el modo de pantalla completa ?

2) Estoy utilizando es de los buenos valores ?

3) ¿hay algo para hacer que se me olvidó ?

De antemano gracias por todas tus respuestas.
Saludos,

  • Sólo por diversión, ¿qué sucede cuando usted presione F11 en el teclado?
  • nada… Mi meta es la fuerza de mi aplicación para estar en pantalla completa ya que es activado. Si presiono F11 cuando mi solicitud es hasta… ya está en pantalla completa… Así que la tecla F11 no tiene ningún efecto.
  • Vea la nueva edición de abajo. Esto debería permitir que usted para ver en qué estado de la ventana se encuentra actualmente en y ajustar (minimizar) en consecuencia. Esperemos que.
InformationsquelleAutor Xavier V. | 2010-08-23

3 Comentarios

  1. 4

    Estos chicos parecen para cubrir todas las opciones.

    Win32: pantalla completa y ocultar la barra de tareas


    Nueva Edición: Basado en un nuevo comentario, prueba este.

    Trampa de la WM_ACTIVATE evento en que la aplicación de esa ventana. En ese caso, llame a la GetWindowPlacement Función y esperamos que usted estará en su camino. Nota: el vínculo a «SetWindowPlacement» en la parte inferior.

    • Gracias por la respuesta. Es una ayuda. No tengo la solución final, pero el enlace es útil.
    • Eso es muy útil. Yo ya estaba cogiendo el WM_ACTIVATE, pero no era consciente de GetWindowPlacement(). Es exactamente lo que necesito. Muchas gracias JustBoo, creo que el éxito de hacer lo que quiero gracias a su ayuda. Es muy apreciada.
  2. 0

    Probarlo sin WS_EX_TOPMOST.

    Cuando está activado, se convertirá en el primer plano de la ventana automáticamente.

    • En mi caso, la eliminación de WS_EX_TOPMOST no cambia nada. La segunda vez que me quieren minimizar, la ventana de estar en primer plano en pantalla completa.
  3. -4
    • Si usted es un Quiosco de la aplicación, a continuación, la pantalla ya está configurado para el ideal /resolución correcta.

    • Si usted no es un Quiosco de la aplicación, entonces usted no tiene ningún negocio f***** * * g con los usuarios de la resolución. Lugar: GetSystemMetrics para obtener el tamaño de la pantalla por defecto, y crear su ventana sin bordes exactamente de que los grandes. La barra de tareas se oculte automáticamente y su aplicación será de «pantalla completa».

    Especialmente ahora que los paneles LCD son populares, la resolución de la pantalla debe coincidir con el panel de resolución en el orden de sub-píxeles anti aliasing para trabajar – ala ClearType. Es su aplicaciones responsabilidad para dibujar correctamente en la resolución de la pantalla, no la otra manera alrededor.

    • Yo no estoy en un Quiosco de la aplicación y ya uso GetSystemMetrics() para obtener la resolución de la pantalla para hacer mi ventana a pantalla completa. Y yo no tengo ningún problema con la barra de tareas. Mi problema es que la ventana a pantalla completa no quiere minimizado cuando me cambie de aplicación para el segundo tiempo.

Dejar respuesta

Please enter your comment!
Please enter your name here