尝试在 win 32 中禁用窗口大小调整时,窗口样式行为不一致



我将以下样式应用于我的窗口,我可以调整预期的大小(WS_CAPTION,WS_VISIBLE,WS_CLIPSIBLINGS,WS_CLIPCHILDREN,WS_SYSMENU,WS_THICKFRAME,WS_OVERLAPPED,WS_MAXIMIZEBOX,WS_MINIMIZEBOX(。我的目标是删除WS_SYSMENU并禁用调整大小。

因此,我随后删除了WS_THICKFRAME,并按预期禁用了窗口大小调整。然后我还必须删除WS_SYSMENU,但窗口大小调整又回来了。

我的最后一组样式是(WS_CAPTION、WS_VISIBLE、WS_CLIPSIBLINGS、WS_CLIPCHILDREN、WS_OVERLAPPED、WS_MAXIMIZEBOX、WS_MINIMIZEBOX(。

有人知道为什么会这样吗?

普通的 win32 窗口中对我来说效果很好:

SetWindowLong(hWnd, GWL_STYLE, WS_CAPTION|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_OVERLAPPED|WS_MAXIMIZEBOX|WS_MINIMIZEBOX);
SetWindowPos(hWnd, 0, 0, 0, 0, 0, SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE|SWP_FRAMECHANGED);

最终的样式是0x16C30000和0x00000100。

当您

想要删除大小调整边框时,添加WS_POPUP通常会有所帮助。

如果没有WS_SYSMENU,WS_MAXIMIZEBOX和WS_MINIMIZEBOX将不会在标题中可见。您可以通过禁用系统菜单中的SC_CLOSE来禁用关闭按钮,如果这是您想要的......

相关内容

  • 没有找到相关文章

最新更新