You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ImGui如何设置静态窗口大小并禁用用户调整窗口功能?

禁用DX10 ImGui窗口的用户调整尺寸功能

要禁用用户调整窗口尺寸的功能,核心是修改创建窗口时的窗口样式——你当前使用的WS_OVERLAPPEDWINDOW包含了WS_THICKFRAME(允许拖动边框调整尺寸)和WS_MAXIMIZEBOX(最大化按钮),这两个样式是导致窗口可调整的关键。

方法一:创建窗口时直接指定不可调整的样式

把WS_OVERLAPPEDWINDOW替换为不含尺寸调整相关的样式组合,比如保留标题栏、系统菜单和最小化按钮(如果不需要最小化按钮也可以去掉WS_MINIMIZEBOX):

HWND hwnd = ::CreateWindowW(wc.lpszClassName, L"Micheal's Application", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, 100, 100, 600, 800, NULL, NULL, wc.hInstance, NULL);

方法二:动态修改已创建窗口的样式

如果需要在程序运行过程中切换窗口是否可调整,可以用SetWindowLongPtr修改样式:

// 获取当前窗口样式
LONG_PTR currentStyle = GetWindowLongPtr(hwnd, GWL_STYLE);
// 移除允许调整尺寸和最大化的样式
currentStyle &= ~(WS_THICKFRAME | WS_MAXIMIZEBOX);
// 应用新样式
SetWindowLongPtr(hwnd, GWL_STYLE, currentStyle);
// 刷新窗口框架,让样式变更生效
SetWindowPos(hwnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);

这样修改后,用户就无法通过拖动边框或点击最大化按钮来改变窗口尺寸了,窗口会保持你设置的600*800初始大小。

内容的提问来源于stack exchange,提问作者Micheal Nestor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:10:36