说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何改变对话框中控件的位置?

编辑:说三道四文库 发布时间:2018-05-27 08:18
HTML文档下载 WORD文档下载 PDF文档下载
我打算在我的程序中改变对话框中控件的大小,让控件的大小随着对话框改变而相应变化。我用GetClientRect()去得控件的位置信息,但只有right和bottom的值,left和top的值都是0。我想用MoveWindow()或者SetWindowPos()来重画控件,但只有right和bottom的值,只能确定宽度和高度,却无法确定位置。想请问各位大虾我应该怎么办呢?
你用ClientToScreen() 或则 ScreenToClient()转换一下,就有left 和 top了。
用 GetWindowsRect 试试,用GetClientRect当然left&top是0
你用MoveWindow()或者SetWindowPos()来重画控件的想法是对的,
但left和top的值都是0。是因为GetClientRect()得到的是控件的逻辑坐标,对控件而言,其left 和 top当然为0了!那怎么办呢?方法为:
(1)在你的控件中调用ClientToScreen()//将你的控件的rect转为Screen坐标
(2)在你的控件中调用GetParent()->ScreenToClient()//将Screen坐标转换为相对你的对话框Wnd的逻辑坐标!

注意“在你的控件中调用”这句话很有意义的,因为当前窗口对象不同,调用函数的意义不同,因为你的控件和你的对话框均为“CWnd对象”
MoveWindow
最简单的方法是:CRect rcWin;GetWindowsRect(&rcWin);即可!
mark
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘