尝试在 win 32 中禁用 window 调整大小时,window 样式行为不一致
Inconsistent window styles behavior when trying to disable window resizing in win 32
我将以下样式应用到我的 window 并且我可以按预期调整大小(WS_CAPTION、WS_VISIBLE、WS_CLIPSIBLINGS、WS_CLIPCHILDREN、 WS_SYSMENU、WS_THICKFRAME、WS_OVERLAPPED、WS_MAXIMIZEBOX、WS_MINIMIZEBOX)。我的目标是删除 WS_SYSMENU 并禁用调整大小。
所以我随后删除了 WS_THICKFRAME 并且 window 调整大小按预期被禁用。然后我还必须删除 WS_SYSMENU 但 window 调整大小又回来了。
我最后的一组样式是 (WS_CAPTION, WS_VISIBLE, WS_CLIPSIBLINGS, WS_CLIPCHILDREN, WS_OVERLAPPED, WS_MAXIMIZEBOX, WS_MINIMIZEBOX).
有人知道为什么会这样吗?
我在普通的 win32 上工作得很好 window:
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 将不会在标题中显示。您可以 disable the close button 通过在系统菜单中禁用 SC_CLOSE 如果这是您想要的...
我将以下样式应用到我的 window 并且我可以按预期调整大小(WS_CAPTION、WS_VISIBLE、WS_CLIPSIBLINGS、WS_CLIPCHILDREN、 WS_SYSMENU、WS_THICKFRAME、WS_OVERLAPPED、WS_MAXIMIZEBOX、WS_MINIMIZEBOX)。我的目标是删除 WS_SYSMENU 并禁用调整大小。
所以我随后删除了 WS_THICKFRAME 并且 window 调整大小按预期被禁用。然后我还必须删除 WS_SYSMENU 但 window 调整大小又回来了。
我最后的一组样式是 (WS_CAPTION, WS_VISIBLE, WS_CLIPSIBLINGS, WS_CLIPCHILDREN, WS_OVERLAPPED, WS_MAXIMIZEBOX, WS_MINIMIZEBOX).
有人知道为什么会这样吗?
我在普通的 win32 上工作得很好 window:
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_MAXIMIZEBOX 和 WS_MINIMIZEBOX 将不会在标题中显示。您可以 disable the close button 通过在系统菜单中禁用 SC_CLOSE 如果这是您想要的...