而问题在于,我在父对话框中调用子对话框的Create(ID,CWND)后, 发现如果动态获得的子对话框大小超出父对话框后,子Dialog去调用MoveWindow或SetWndPos将不能达到我要求的大小,只是限制在了父对话框的大小中。
而自己试验得到,如果在rc文件中将子对话框改成超过父对话框的大小的,则子对话框可以按当前rc中的大小来显示,可动态获得的大小总有可能会超过rc中设定的默认值,所以不合理。
所以,想问大家, 我的这个子对话框如何在还没有创建时,就能修改rc中默认的大小到动态要求的大小来显示,而不至于被父对话框的大小所困住呀?
先行谢过
6 个解决方案
#1
你创建子对话框的之前先计算子对话框大小,然后先把主对话框用MoveWindow或SetWindowPos改变成合适的大小再添加子对话框
#2
setowner???
#3
如果可以修改主对话框的大小的话,按照 2 楼 的方法,应该可以啊,
如果你禁止修改主对话框的大小的话,估计比较麻烦,系统的 MoveWindow或SetWndPos 函数都是和父窗口相关的。
如果你禁止修改主对话框的大小的话,估计比较麻烦,系统的 MoveWindow或SetWndPos 函数都是和父窗口相关的。
#4
显示子对话框前先改变主对话框大小
#5
的确,这位仁兄说的对,但我下午试的时候发现子对话框中的控件(如ListView)改变大小,让它变长超出子对话框,这时子对话框再调用MoveWindow就可以变长至这个控件的长度。。。不明白微软这个奇怪的设计是怎么出来的
#6
#1
你创建子对话框的之前先计算子对话框大小,然后先把主对话框用MoveWindow或SetWindowPos改变成合适的大小再添加子对话框
#2
setowner???
#3
如果可以修改主对话框的大小的话,按照 2 楼 的方法,应该可以啊,
如果你禁止修改主对话框的大小的话,估计比较麻烦,系统的 MoveWindow或SetWndPos 函数都是和父窗口相关的。
如果你禁止修改主对话框的大小的话,估计比较麻烦,系统的 MoveWindow或SetWndPos 函数都是和父窗口相关的。
#4
显示子对话框前先改变主对话框大小
#5
的确,这位仁兄说的对,但我下午试的时候发现子对话框中的控件(如ListView)改变大小,让它变长超出子对话框,这时子对话框再调用MoveWindow就可以变长至这个控件的长度。。。不明白微软这个奇怪的设计是怎么出来的