注册 登录
编程论坛 VC++/MFC

GetWindowRect(&rc)(其中CRect rc)用MessageBox显示出窗口中不同button控件的坐标都是一样的,求解~~

serena1992 发布于 2011-08-18 16:43, 1108 次点击
下面是我在BOOL CSignalStrengthTestDlg::OnInitDialog()函数中写的代码,用来查看ID为IDCANCEL的按钮中心所在的屏幕的位置
只有本站会员才能查看附件,请 登录

运行结果如下:
只有本站会员才能查看附件,请 登录

我在这个函数中修改了button的ID,改成IDC_STARTDRAW,同样用MessageBox来看该按钮在屏幕中的中心坐标:
只有本站会员才能查看附件,请 登录

结果如下:
只有本站会员才能查看附件,请 登录

这两个按钮在窗口中的分布不在一起,
只有本站会员才能查看附件,请 登录
而且messagebox都显示为0,这个究竟出了什么问题了呢?
5 回复
#2
zhoufeng19882011-08-18 18:39
确定已经添加按钮吗?

[ 本帖最后由 zhoufeng1988 于 2011-8-18 18:43 编辑 ]
#3
zhoufeng19882011-08-18 18:42
还有,用%d代替%f
#4
serena19922011-08-19 10:13
以下是引用zhoufeng1988在2011-8-18 18:42:58的发言:

还有,用%d代替%f
我确定已经增加了按钮的,试着用%d代替了%f,发现这个方法是可行的,我后来在网上仔细看了下,发现GetWindowRect()得到的是在屏幕坐标系下的RECT(即以屏幕左上角为原点)而rect的构造函数反应的是像素,像素不可能为double类型,所以只能用%d才对。(这个解释合理吗?)
#5
zhoufeng19882011-08-19 12:55
恩。
坐标是LONG类型的,应该用%d格式符或者%ld。
#6
serena19922011-08-19 14:56
嗯,学习了,谢谢!
1