@@ -46,12 +46,12 @@ HMODULE d3d9dll = NULL;
46
46
bool bForceWindowedMode;
47
47
bool bUsePrimaryMonitor;
48
48
bool bCenterWindow;
49
- bool bBorderlessFullscreen;
50
49
bool bAlwaysOnTop;
51
50
bool bDoNotNotifyOnTaskSwitch;
52
51
bool bDisplayFPSCounter;
53
52
float fFPSLimit ;
54
53
int nFullScreenRefreshRateInHz;
54
+ int nForceWindowStyle;
55
55
56
56
char WinDir[MAX_PATH+1 ];
57
57
@@ -262,7 +262,7 @@ void ForceWindowed(D3DPRESENT_PARAMETERS* pPresentationParameters, D3DDISPLAYMOD
262
262
int left = (int )info.rcMonitor .left ;
263
263
int top = (int )info.rcMonitor .top ;
264
264
265
- if (!bBorderlessFullscreen)
265
+ if (nForceWindowStyle != 1 ) // not borderless fullscreen
266
266
{
267
267
left += (int )(((float )DesktopResX / 2 .0f ) - ((float )pPresentationParameters->BackBufferWidth / 2 .0f ));
268
268
top += (int )(((float )DesktopResY / 2 .0f ) - ((float )pPresentationParameters->BackBufferHeight / 2 .0f ));
@@ -282,16 +282,36 @@ void ForceWindowed(D3DPRESENT_PARAMETERS* pPresentationParameters, D3DDISPLAYMOD
282
282
283
283
if (hwnd != NULL )
284
284
{
285
+ int cx, cy;
285
286
UINT uFlags = SWP_SHOWWINDOW;
286
- if (bBorderlessFullscreen)
287
+ LONG lOldStyle = GetWindowLong (hwnd, GWL_STYLE);
288
+ LONG lOldExStyle = GetWindowLong (hwnd, GWL_EXSTYLE);
289
+ LONG lNewStyle, lNewExStyle;
290
+ if (nForceWindowStyle == 1 ) // borderless fullscreen
287
291
{
288
- LONG lOldStyle = GetWindowLong (hwnd, GWL_STYLE) ;
289
- LONG lOldExStyle = GetWindowLong (hwnd, GWL_EXSTYLE) ;
290
- LONG lNewStyle = lOldStyle & ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_DLGFRAME);
292
+ cx = DesktopResX ;
293
+ cy = DesktopResY ;
294
+ lNewStyle = lOldStyle & ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_DLGFRAME);
291
295
lNewStyle |= (lOldStyle & WS_CHILD) ? 0 : WS_POPUP;
292
- LONG lNewExStyle = lOldExStyle & ~(WS_EX_CONTEXTHELP | WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE | WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW);
296
+ lNewExStyle = lOldExStyle & ~(WS_EX_CONTEXTHELP | WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE | WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW);
293
297
lNewExStyle |= WS_EX_APPWINDOW;
298
+ }
299
+ else
300
+ {
301
+ cx = pPresentationParameters->BackBufferWidth ;
302
+ cy = pPresentationParameters->BackBufferHeight ;
303
+ if (!bCenterWindow)
304
+ uFlags |= SWP_NOMOVE;
294
305
306
+ if (nForceWindowStyle) // force windowed style
307
+ {
308
+ lOldExStyle &= ~(WS_EX_TOPMOST);
309
+ lNewStyle = (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX);
310
+ lNewStyle |= (nForceWindowStyle == 3 ) ? (WS_THICKFRAME | WS_MAXIMIZEBOX) : 0 ;
311
+ lNewExStyle = (WS_EX_APPWINDOW | WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE);
312
+ }
313
+ }
314
+ if (nForceWindowStyle) {
295
315
if (lNewStyle != lOldStyle)
296
316
{
297
317
SetWindowLong (hwnd, GWL_STYLE, lNewStyle);
@@ -302,15 +322,8 @@ void ForceWindowed(D3DPRESENT_PARAMETERS* pPresentationParameters, D3DDISPLAYMOD
302
322
SetWindowLong (hwnd, GWL_EXSTYLE, lNewExStyle);
303
323
uFlags |= SWP_FRAMECHANGED;
304
324
}
305
- SetWindowPos (hwnd, bAlwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST, left, top, DesktopResX, DesktopResY, uFlags);
306
- }
307
- else
308
- {
309
- if (!bCenterWindow)
310
- uFlags |= SWP_NOMOVE;
311
-
312
- SetWindowPos (hwnd, bAlwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST, left, top, pPresentationParameters->BackBufferWidth , pPresentationParameters->BackBufferHeight , uFlags);
313
325
}
326
+ SetWindowPos (hwnd, bAlwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST, left, top, cx, cy, uFlags);
314
327
}
315
328
}
316
329
@@ -947,9 +960,9 @@ bool WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
947
960
bDisplayFPSCounter = GetPrivateProfileInt (" MAIN" , " DisplayFPSCounter" , 0 , path);
948
961
bUsePrimaryMonitor = GetPrivateProfileInt (" FORCEWINDOWED" , " UsePrimaryMonitor" , 0 , path) != 0 ;
949
962
bCenterWindow = GetPrivateProfileInt (" FORCEWINDOWED" , " CenterWindow" , 1 , path) != 0 ;
950
- bBorderlessFullscreen = GetPrivateProfileInt (" FORCEWINDOWED" , " BorderlessFullscreen" , 0 , path) != 0 ;
951
963
bAlwaysOnTop = GetPrivateProfileInt (" FORCEWINDOWED" , " AlwaysOnTop" , 0 , path) != 0 ;
952
964
bDoNotNotifyOnTaskSwitch = GetPrivateProfileInt (" FORCEWINDOWED" , " DoNotNotifyOnTaskSwitch" , 0 , path) != 0 ;
965
+ nForceWindowStyle = GetPrivateProfileInt (" FORCEWINDOWED" , " ForceWindowStyle" , 0 , path);
953
966
954
967
if (fFPSLimit > 0 .0f )
955
968
{
0 commit comments