2011-09-04 8 views
5

Sto usando SDL 1.2.14, e ho trovato un caso in cui ho bisogno di essere in grado di selezionare quale monitor ottiene la finestra a schermo intero. Con Xorg, ho trovato che Xinerama poteva fare il lavoro usando la variabile di ambiente SDL_VIDEO_FULLSCREEN_HEAD, tuttavia, non sono riuscito a trovare qualcosa di simile per Win32.Spostare finestra a schermo intero per monitor secondario con Win32/SDL

La finestra a schermo intero viene sempre creata sul monitor principale e poiché SDL 1.2 non lo fa (SDL 1.3 può, ma non è stabile) fornire l'API per selezionare quale monitor deve essere utilizzato su Win32, mi chiedo se è possibile spostare a livello di codice la finestra a schermo intero sul monitor secondario utilizzando l'API Win32 dopo che è stata creata.

Sono in grado di ottenere gli handle di Win32 sottostanti per la finestra/contesto.

risposta

3

Raymond Chen ha scritto un utile articolo su come switch an application between windowed and full screen. La parte importante per te sarebbe questo sezione del codice:

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

Questo ottiene le informazioni monitor per un monitor specifico, ma utilizza il valore restituito da MonitorFromWindow di scegliere il monitor su cui la finestra attualmente risiede. Esistono diversi altri metodi per selezionare un monitor, ad esempio fornire una coordinata X, Y o enumerarli (utilizzando EnumDisplayMonitors(...)).

GetMonitorInfo(...) restituisce un MONITORINFO indietro, che contiene la posizione e le dimensioni relative del display, che è possibile utilizzare per posizionare la finestra a schermo intero.

L'API completa è dettagliata su MSDN.

+0

mi rendo conto che si desidera spostare una finestra già a schermo intero per un altro monitor, ma si dovrebbe essere in grado di trarre come fare che dalle informazioni che ho dato. – icabod