Getting output on MULTIPLE screens?

BlitzMax Forums/BlitzMax Programming/Getting output on MULTIPLE screens?

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

If you use windowed mode then it's no big deal, just set windows to "extend my desktop on this monitor" and in max open a "bigger" widow, you can even make it fullscreen without borders/menu/status.

Here is the function I use for that

Function SetWindowFullscreen:Int(Window:TGadget)

	Extern "Win32"
		Function SetWindowLongA:Int(hWnd:Int, nIndex:Int, dwNewLong:Int)="SetWindowLongA@12"
		Function SetLayeredWindowAttributes(hWnd:Int, temp:Int, alpha:Int, buh:Int)="SetLayeredWindowAttributes@16"
		Function GetWindowLongA:Int(hWnd:Int, nIndex:Int)="GetWindowLongA@8"
		Function MoveWindow:Int(hwnd:Int, x:Int, y:Int, nWidth:Int, nHeight:Int, bRepaint:Int)="MoveWindow@24"
		Function GetSystemMetrics:Int (nIndex:Int) = "GetSystemMetrics@4"
		Function SetWindowPos:Int (hwnd:Int, hWndInsertAfter:Int, x:Int, y:Int, cx:Int, cy:Int, wFlags:Int) = "SetWindowPos@28"
	End Extern

	Local hWnd:Int
	Local Style:Int
   
	hWnd = QueryGadget(Window, QUERY_HWND)
   
	If Not hWnd
		Return False
	EndIf
   
   'Style = GetWindowLongA(hWnd, GWL_STYLE)
   'Style:|WS_EX_LAYERED
   
	Const SM_XVIRTUALSCREEN:Int       =76
	Const SM_YVIRTUALSCREEN:Int       =77
	Const SM_CXVIRTUALSCREEN:Int      =78
	Const SM_CYVIRTUALSCREEN:Int      =79
	Const SM_CMONITORS:Int            =80
	Const SM_SAMEDISPLAYFORMAT:Int    =81
	
	Style = WS_VISIBLE
	
	Local window_w:Int = GetSystemMetrics(SM_CXVIRTUALSCREEN)
	Local window_h:Int = GetSystemMetrics(SM_CYVIRTUALSCREEN)
	ReleaseCapture()
	SetWindowLongA(hWnd, GWL_STYLE, Style)

	MoveWindow(hWnd, (GetSystemMetrics(SM_CXVIRTUALSCREEN) - window_w) / 2, (GetSystemMetrics(SM_CYVIRTUALSCREEN) - window_h) / 2, window_w, window_h, 1)
	Return True

End Function


If you want to have it fullscreen (real fullscreen) you can do it by passing the dual screen resolution to "graphics" function, altough it will work only if this dualscreen is setup on a single graphic card with dual output, I have been testing that only on NVidia cards. If you have multiple graphic cards then you have no other choice than using windowed mode with "fake" fullscreen.