我想在运行时更改窗口样式。我用这个代码
if (this->fullscreen)
{
this->style = WS_POPUP|WS_VISIBLE;
}
else
{
this->style = WS_OVERLAPPED|WS_SYSMENU|WS_VISIBLE;
}
SetWindowLongPtr(this->mainWindowHandle, GWL_STYLE, this->style);
SetWindowPos(this->mainWindowHandle,
HWND_TOP,
0,
0,
0, //New Width
0, //New Height,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
但它没有效果......窗口仍然没有边框(WS_POPUP)......
答案 0 :(得分:2)
根据MSDN,您无法在创建窗口后修改这些特定样式。无论如何你还要尝试,它还说WS_SYSMENU需要WS_CAPTION。
答案 1 :(得分:1)
尝试使用标记SetWindowPos
调用SWP_DRAWFRAME
并查看是否有帮助。
答案 2 :(得分:0)
您可能需要使用CWnd::ModifyStyle。看看示例here
答案 3 :(得分:0)
您可以从实际窗口保存当前位置和大小。然后摧毁它,创建一个新窗口,其中包含新的样式,之前的位置和大小。