C 定位/重新定位/调整大小/调整大小/移动上下控件的正确方法是什么?正确的尺寸是多少?应该是兄弟的孩子吗?

C 定位/重新定位/调整大小/调整大小/移动上下控件的正确方法是什么?正确的尺寸是多少?应该是兄弟的孩子吗?,c,winapi,layout,comctl32,C,Winapi,Layout,Comctl32,这是谷歌搜索无法找到的一个,部分原因是“位置”一词既适用于屏幕上的位置(这就是我所说的),也适用于上/下控件的当前位置(这可能应该称为当前值,而不是我所说的) 如何设置向上/向下控件的正确位置和大小?文档对此非常模糊:它说UDS\u ALIGNLEFT/UDS\u ALIGNRIGHT样式会自动重新定位和调整好友窗口的大小,但这似乎只发生在控件创建时。MSDN上给出的示例代码也表示要给出上下位置(0,0)和大小0x0,但同样,这似乎只会影响窗口的创建。此窗口创建尤其是一个问题,因为我在使用UDM

这是谷歌搜索无法找到的一个,部分原因是“位置”一词既适用于屏幕上的位置(这就是我所说的),也适用于上/下控件的当前位置(这可能应该称为当前值,而不是我所说的)

如何设置向上/向下控件的正确位置和大小?文档对此非常模糊:它说
UDS\u ALIGNLEFT
/
UDS\u ALIGNRIGHT
样式会自动重新定位和调整好友窗口的大小,但这似乎只发生在控件创建时。MSDN上给出的示例代码也表示要给出上下位置(0,0)和大小0x0,但同样,这似乎只会影响窗口的创建。此窗口创建尤其是一个问题,因为我在使用
UDM\u SETBUDDY
创建窗口后设置了buddy控件

更奇怪的是,Windows布局页面(包括当前的Vista+页面、MMC首选大小页面和旧的Microsoft Windows用户体验手册)没有指定向上/向下控件的正确大小

我确实尝试只移动/调整好友窗口的大小,但上下控件没有跟随。我试着只移动/调整上下控件的大小,但整个上下控件都被设置为给定的大小,而好友控件没有跟随。我尝试移动/调整好友窗口的大小,然后将上下大小设置为0x0,并将位置设置为(0,0),但这也不起作用

或者,我是否需要使buddy窗口成为上下控件的父控件,以使其工作?或者这不管用

我使用的是Common Controls 6,并在Windows XP和wine上进行了测试

谢谢

更新

事实证明,设置(0,0)/0x0确实有效,即使使用
UDM\u SETBUDDY
——但这只是第一次。我不确定这是指“第一时间段”还是“第一次设置一个独特的好友”。重复使用
UDM\u SETBUDDY
设置同一好友在Windows XP上不起作用(但在wine中也起作用,所以我可能应该再试一次…)

我的问题是在调整大小时确定控件的正确大小(因为我使用DLU计算)。在创建时具有固定的宽度/高度也不能正确处理可能影响DLU到像素转换(DPI更改、字体更改等)的设置在程序执行期间更改的情况


我开始怀疑我是否应该每次都重新创建updown,但这听起来不必要的昂贵,我宁愿将其保存为最后手段。

为什么不将up/down控件移动到与buddy窗口相同的增量?就我个人而言,我不希望在创建后调整大小,只是重新定位。嗯。。。我做了一个小测试,(0,0)/0x0东西似乎确实有效,即使我后来设置了buddy控件;但它们仅在指定好友控件时对窗口大小生效。这对我来说是个问题,因为我在事后计算出了控件的大小,但我可能会以某种方式解决这个问题……更新:每次重新设置好友控件都不起作用(它在wine上有效,但在Windows XP上无效)。使用上述信息和其他信息更新了问题。如果将好友重置为空,然后将其再次设置为正确的控件,会发生什么情况?