【发布时间】:2011-12-02 03:35:12
【问题描述】:
如果您查看浏览器 Firefox、Chrome 或 Opera 的窗口,您会注意到它们的窗口
- 具有最小化/最大化/关闭按钮
- 可调整大小
- 但没有标题栏
我很感兴趣:如何创建这样的窗口?
我已经尝试过的:
我在 StackOverflow 上环顾四周(也用 Google 搜索过),发现了这个:opening a window that has no title bar with win32
不幸的是,这并没有完全帮助:
第一步是扩展opening a window that has no title bar with win32上提出的解决方案
hWnd = CreateWindow(szWindowClass, szTitle, WS_BORDER,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);
SetWindowLong(hWnd, GWL_STYLE, WS_SIZEBOX);
// See remarks on http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545.aspx
SetWindowPos(hWnd, 0,
0, 0, 0, 0, // Position + Size
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
当然,这不会提供最小化/最大化按钮,但另一方面,如果我想要最小化/最大化按钮,我必须这样做:
SetWindowLong(hWnd, GWL_STYLE, WS_SIZEBOX | WS_MAXIMIZEBOX |
WS_MINIMIZEBOX | WS_SYSMENU | WS_CAPTION);
为什么这种组合似乎是必要的?首先我可能想要WS_MAXIMIZEBOX | WS_MINIMIZEBOX,因为我想要这些按钮。
但是http://msdn.microsoft.com/en-us/library/ms632600.aspx 表示如果我设置WS_MAXIMIZEBOX 和WS_MINIMIZEBOX 之一,我还必须设置WS_SYSMENU。当我设置WS_SYSMENU 时,我还必须设置WS_CAPTION 但这不是我想要的,因为我想避免标题栏(实际上:如果WS_CAPTION 未设置,则不会显示最小化/最大化按钮)。
那该怎么办呢?
【问题讨论】:
-
此方法不适用于 windows 10
标签: c++ winapi window titlebar