要在SDL2中创建一个没有模式集的“假”全屏窗口,您可以使用类似的方法创建一个无边界、最大化的窗口
int idx=SDL\u GetWindowDisplayIndex(g\u displayWindow);
SDL右界;
SDL_GetDisplayBounds(idx和边界);
//SDL_设置窗口可调整大小(g_显示窗口,SDL_错误);
SDL_设置窗口边框(g_显示窗口,SDL_假);
SDL_设置窗口位置(g_显示窗口,bounds.x,bounds.y);
SDL_setWindowsSize(g_displayWindow,bounds.w,bounds.h);
对于不可调整大小的窗口,这非常有效。在使用SDL_WINDOW_可调整大小创建的窗口上,屏幕的底部和右边缘(在窗口上)有一个恼人的灰色边框。不幸的是,没有SDL_SetWindowResizeable函数(从SDL 2.0.4开始)。如何在不重新创建窗口的情况下消除调整大小的边框
SDL_WINDOW_FULLSCREEN_DESKTOP和SDL_WINDOW_FULLSCREEN都做了一个我想要避免的模式设置-它需要更长的时间,很难将alt tab移出,如果游戏在调试器中遇到断点,它可以锁定整个系统
这就是我提出的,经过测试并在windows上工作
void SDL\u设置窗口可调整大小(SDL\u窗口*win,SDL\u bool可调整大小)
{
SDL_SysWMinfo信息;
SDL_版本(&;info.VERSION);
SDL_GetWindowWMInfo(g_显示窗口和信息);
#如果是WIN32
HWND HWND=info.info.win.window;
DWORD样式=GetWindowLong(hwnd、GWL_样式);
如果(可调整大小)
样式|=WS|U厚框;
其他的
样式&;=~WS_THICKFRAME;
SetWindowLong(hwnd、GWL_样式、样式);
#恩迪夫
}