WinApi - 更改窗口样式

时间:2011-02-11 10:49:42

标签: c++ winapi

我想在运行时更改窗口样式。我用这个代码

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)......

4 个答案:

答案 0 :(得分:2)

根据MSDN,您无法在创建窗口后修改这些特定样式。无论如何你还要尝试,它还说WS_SYSMENU需要WS_CAPTION。

答案 1 :(得分:1)

尝试使用标记SetWindowPos调用SWP_DRAWFRAME并查看是否有帮助。

答案 2 :(得分:0)

您可能需要使用CWnd::ModifyStyle。看看示例here

答案 3 :(得分:0)

您可以从实际窗口保存当前位置和大小。然后摧毁它,创建一个新窗口,其中包含新的样式,之前的位置和大小。