如何在窗口未创建的时候,改变对话框rc文件中窗口默认大小?

时间:2021-10-24 10:42:29
如题,因为我做的是一个对话框中显示子对话框,而子对话框的大小是动态的获得来创建的。
而问题在于,我在父对话框中调用子对话框的Create(ID,CWND)后, 发现如果动态获得的子对话框大小超出父对话框后,子Dialog去调用MoveWindow或SetWndPos将不能达到我要求的大小,只是限制在了父对话框的大小中。

而自己试验得到,如果在rc文件中将子对话框改成超过父对话框的大小的,则子对话框可以按当前rc中的大小来显示,可动态获得的大小总有可能会超过rc中设定的默认值,所以不合理。

所以,想问大家, 我的这个子对话框如何在还没有创建时,就能修改rc中默认的大小到动态要求的大小来显示,而不至于被父对话框的大小所困住呀?
先行谢过

6 个解决方案

#1


你创建子对话框的之前先计算子对话框大小,然后先把主对话框用MoveWindow或SetWindowPos改变成合适的大小再添加子对话框

#2


setowner???

#3


如果可以修改主对话框的大小的话,按照 2 楼 的方法,应该可以啊,

如果你禁止修改主对话框的大小的话,估计比较麻烦,系统的 MoveWindow或SetWndPos 函数都是和父窗口相关的。

#4


显示子对话框前先改变主对话框大小

#5


引用 3 楼 tandyt 的回复:
如果可以修改主对话框的大小的话,按照 2 楼 的方法,应该可以啊,

如果你禁止修改主对话框的大小的话,估计比较麻烦,系统的 MoveWindow或SetWndPos 函数都是和父窗口相关的。


的确,这位仁兄说的对,但我下午试的时候发现子对话框中的控件(如ListView)改变大小,让它变长超出子对话框,这时子对话框再调用MoveWindow就可以变长至这个控件的长度。。。不明白微软这个奇怪的设计是怎么出来的

#6


该回复于2012-07-17 10:53:45被版主删除

#1


你创建子对话框的之前先计算子对话框大小,然后先把主对话框用MoveWindow或SetWindowPos改变成合适的大小再添加子对话框

#2


setowner???

#3


如果可以修改主对话框的大小的话,按照 2 楼 的方法,应该可以啊,

如果你禁止修改主对话框的大小的话,估计比较麻烦,系统的 MoveWindow或SetWndPos 函数都是和父窗口相关的。

#4


显示子对话框前先改变主对话框大小

#5


引用 3 楼 tandyt 的回复:
如果可以修改主对话框的大小的话,按照 2 楼 的方法,应该可以啊,

如果你禁止修改主对话框的大小的话,估计比较麻烦,系统的 MoveWindow或SetWndPos 函数都是和父窗口相关的。


的确,这位仁兄说的对,但我下午试的时候发现子对话框中的控件(如ListView)改变大小,让它变长超出子对话框,这时子对话框再调用MoveWindow就可以变长至这个控件的长度。。。不明白微软这个奇怪的设计是怎么出来的

#6


该回复于2012-07-17 10:53:45被版主删除