gpt4 book ai didi

windows - 全屏与无边框窗口

转载 作者:可可西里 更新时间:2023-11-01 13:21:49 26 4
gpt4 key购买 nike

我的目标是创建一个 OpenGL 应用程序。我见过很多让用户决定“游戏窗口”是“全屏”还是“无边框”的游戏。有什么不同?如何实现每个方法?

听说全屏窗口就是设置了屏幕宽度和高度的 WS_POPUP 样式的窗口。这是否仅适用于我上面提到的一种方法?

这里的“无边框”和“全屏”有什么区别? (截图来自英雄联盟) img

最佳答案

您只需要 WS_POPUP 和全屏宽度和高度即可隐藏任务栏。这是在窗口已显示后更改窗口样式的示例:

if (msg == WM_LBUTTONDOWN)
{
if (GetWindowLongPtr(hwnd, GWL_STYLE) & WS_POPUP)
{
SetWindowLongPtr(hwnd, GWL_STYLE, WS_VISIBLE | WS_OVERLAPPEDWINDOW);
SetWindowPos(hwnd, NULL, 0, 0, 600, 400, SWP_FRAMECHANGED);
}
else
{//show full-screen
int w = GetSystemMetrics(SM_CXSCREEN);
int h = GetSystemMetrics(SM_CYSCREEN);
SetWindowLongPtr(hwnd, GWL_STYLE, WS_VISIBLE | WS_POPUP);
SetWindowPos(hwnd, HWND_TOP, 0, 0, w, h, SWP_FRAMECHANGED);
}
}

或者以初始全屏大小显示:

int w = GetSystemMetrics(SM_CXSCREEN);
int h = GetSystemMetrics(SM_CYSCREEN);
HWND hmain = CreateWindow(L"className", L"title", WS_POPUP, 0, 0, w, h, 0, 0, hInst, 0);
ShowWindow(hmain, SW_SHOW);

Windows 是WS_OVERLAPPEDWS_POPUPWS_CHILD。这三个标志不能相互组合,但它们可以与其他 WS_XXXX 标志组合。

顶部窗口是 WS_OVERLAPPEDWS_POPUP 主窗口的不同样式包括:

  • 普通窗口:WS_OVERLAPPED,显示为ShowWindow(hwnd, SW_SHOW)

  • 最大化窗口:WS_OVERLAPPED,用ShowWindow(hwnd, SW_MAXMIZE)显示,覆盖整个屏幕,不包括任务栏

  • 全屏:WS_POPUP 标志,宽高设置为SM_CXSCREEN/SM_CYSCREEN,覆盖整个屏幕,它会过去任务栏

所有这些窗口都可以有或没有 WS_BORDER。或者他们可能有用于调整边框大小的 WS_THICKFRAME。在全屏模式下,窗口通常没有边框。在最大化模式下,边框位于 View 区域之外。

更多详情:Window Styles

关于windows - 全屏与无边框窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34462445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com