【发布时间】:2018-04-14 16:34:21
【问题描述】:
我的应用是 Win32;我正在使用 VS 2015。我有一个包含列表框的对话框。我将列表框设置为动态调整大小,但在调整对话框大小时它不会改变。
这里是列表框的属性:
列表框是所有者绘制的:
这是对话框的默认大小:
这是我在资源研讨会对话框编辑器中以测试模式拉伸时对话框的样子。注意里面的列表框也像希望的那样展开了:
但是,当它实际运行时,拉伸对话框并不会增加列表框的大小:
为什么这不起作用?我必须调用一些额外的巫术才能让它真正起作用吗?这仅适用于MFC吗? CWnd::ExecuteDlgInit 的 Win32 等效项是什么?
注意:我已经看过https://msdn.microsoft.com/en-us/library/mt270148.aspx和http://mariusbancila.ro/blog/2015/07/27/dynamic-dialog-layout-for-mfc-in-visual-c-2015/,但我没有找到答案。
【问题讨论】:
-
它只适用于 MFC。在纯 Win32 中,您必须自己完成所有操作。
-
真的吗?叹息......我知道如何从头开始,我只是希望摆脱乏味。感谢您的反馈。
-
Win32 有很多第三方调整大小/布局类,我相信我已经使用了一段时间的this one from codeproject 的修改版本。主要是我将
MoveWindow()替换为DeferWindowPos()以减少闪烁(确保还为您的对话框设置WS_CLIPCHILDREN)。
标签: c++ winapi modal-dialog resize