这是一个躲避谷歌搜索,部分原因是“位置”一词适用于屏幕上的位置(这就是我正在谈论的)和上/下控件的当前位置(可能应该被称为当前值和哪个不是我要说的)。
如何设置上/下控件的正确位置和大小?文档对此非常模糊:它说UDS_ALIGNLEFT
/UDS_ALIGNRIGHT
样式会自动重新定位和调整伙伴窗口的大小,但这似乎只发生在控件创建时。MSDN 上也给出的示例代码说要给出上下位置 (0, 0) 和大小 0x0,但同样,这似乎只影响窗口创建。这个窗口创建尤其成问题,因为我在创建窗口后使用UDM_SETBUDDY
.
更奇怪的是,Windows 布局页面(包括当前的 Vista+ 页面、MMC 首选尺寸页面和旧版Microsoft Windows 用户体验手册)并没有指定向上/向下控件的正确大小!
我确实尝试仅移动/调整伙伴窗口的大小,但没有跟随上下控制。我尝试仅移动/调整上下控件的大小,但整个上下控件都设置为给定大小,而伙伴控件没有跟随。我尝试移动/调整伙伴窗口的大小,然后将上下大小设置为 0x0 并将位置设置为 (0, 0) 但这也不起作用。
或者,我是否需要将伙伴窗口设置为上下控件的父级才能正常工作?或者那行不通?
我正在使用 Common Controls 6 并在 Windows XP 和 wine 上进行了测试。
谢谢。
更新
事实证明,设置 (0,0)/0x0 确实有效,即使是UDM_SETBUDDY
- 但只是第一次。我不确定这是否意味着“第一个时间段”或“第一次设置唯一的好友”。反复设置同一个伙伴UDM_SETBUDDY
在 Windows XP 上不起作用(虽然它在 wine 中起作用,所以也许我应该再试一次......)。
我的问题是我在调整大小时确定了控件的正确大小(因为我使用 DLU 计算)。在创建时具有固定的宽度/高度也无法正确处理可能影响 DLU 到像素转换(DPI 更改、字体更改等)的设置在程序执行期间发生更改的情况。
我开始怀疑我是否应该每次都重新创建 updown,但这听起来不必要地昂贵,我宁愿把它保存起来以备不时之需。