Ok so - after a lot of testing - it turns out that for Tier2 users at least there is a way to open the AppGameKit window full screen on a second or even third screen - and possibly to span multiple windows depending on your graphic card setup.
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// quick hack for now to get location of usable secondary monitor.
// setup some globals for now
int gCountMonitors = 0;
int gPreferedMonitor = 0;
int gStoredMonitor = 0;
HMONITOR gPrefhMonitor; // this will hold the direct reference to the monitor we want to open full screen window on eventually
BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)
{
// count total number of monitors
gCountMonitors++;
if (gCountMonitors == 1 | gCountMonitors == gPreferedMonitor)
{
gStoredMonitor = gCountMonitors;
gPrefhMonitor = hMonitor;
}
return TRUE;
}
///////////////////////////////////////////////////////////////////////////////////////////////
// inside the main window
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
... Just before the call to CreateWin32Window(
// set a value for the monitor we would like to open 1,2,3
gPreferedMonitor = 2; // set the preferred monitor for display
// Enumerate the monitor list and get core monitor metrics for either the default monitor or a preferred monitor
gCountMonitors = 0;
EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, NULL);
/////////////////////////////////////////////////////////////////////////////////////
// create a win32 window for the app
HWND hWnd = CreateWin32Window( hInstance, DEVICE_WIDTH, DEVICE_HEIGHT, uString("AGK"), dwCenterWindowX, dwCenterWindowY, FULLSCREEN )
////////////////////////////////////////////////////////////////////////////////////////////////////////
The rest of the magic then needs to happen inside CreateWIn32Window()
...
RECT rc;
GetWindowRect(GetDesktopWindow(), &rc);
//Immediately after the call to GetWindowRect we need to add a new set of code
//handle special coding for re-positioning to second monitor if needed
// for now override the previous system process - we will try to force the window to open on the referred window.
if (fullscreen && gPreferedMonitor != 1 && gStoredMonitor == gPreferedMonitor)
{
// we first create a monitorinfo instance
MONITORINFOEX mi;
mi.cbSize = sizeof(mi);
// then get the details of the monitor we want to switch to
GetMonitorInfo(gPrefhMonitor, &mi);
// and then we override the normal window rectangle
rc = mi.rcMonitor;
}
...
// finally we change the x and y position to the location of the new window if fullscreen is set.
if ( fullscreen )
{
width = rc.right-rc.left;
height = rc.bottom-rc.top;
x = rc.left;
y = rc.top;
// the nett result is that windows will force the full screen window to open on the secondary monitor