2011-09-04 14 views
5

Estoy usando SDL 1.2.14, y he encontrado un caso en el que necesito poder seleccionar qué monitor obtiene la ventana de pantalla completa. Con Xorg, descubrí que Xinerama podía hacer el trabajo usando la variable de entorno SDL_VIDEO_FULLSCREEN_HEAD, sin embargo, no he podido encontrar algo similar para Win32.Mover la ventana de pantalla completa al monitor secundario con Win32/SDL

La ventana de pantalla completa siempre se crea en el monitor principal, y como SDL 1.2 no (SDL 1.3 puede, pero no es estable) proporciona la API para seleccionar qué monitor usar en Win32, me pregunto si es posible mover mediante programación la ventana de pantalla completa al monitor secundario utilizando la API Win32 después de que se haya creado.

Puedo obtener los identificadores Win32 subyacentes para la ventana/contexto.

Respuesta

3

Raymond Chen escribió un artículo útil sobre cómo switch an application between windowed and full screen. La parte importante para usted sería esta sección del código:

GetMonitorInfo(MonitorFromWindow(hwnd, MONITOR_DEFAULTTOPRIMARY), &mi)) 

Este obtiene la información del monitor para un monitor específico, pero utiliza el valor devuelto por MonitorFromWindow para recoger el monitor en el que reside actualmente la ventana. Existen otros métodos para seleccionar un monitor, como proporcionar una coordenada X, Y o enumerarlos (usando EnumDisplayMonitors(...)).

GetMonitorInfo(...) pasa un MONITORINFO hacia atrás, que contiene la posición relativa y el tamaño de la pantalla, que puede usar para ubicar la ventana de pantalla completa.

La API completa se detalla en MSDN.

+0

Me doy cuenta de que desea mover una ventana que ya tiene pantalla completa a otro monitor, pero debería ser capaz de derivar cómo hacerlo a partir de la información que he proporcionado. – icabod

Cuestiones relacionadas