如何得到控件的位置,这样为什么不行
如何得到控件的位置
这样为什么不行
CRect rect;
CWnd* pWnd;
pWnd=GetDlgItem(IDC_BtonOK );//按钮控件
pWnd->ScreenToClient (&rect);
问题点数:100、回复次数:10Top
1 楼hnyyy(前进)回复于 2002-04-03 17:46:09 得分 20
你的是个空Rect;
应加上pWnd->GetWindowRect();Top
2 楼hnyyy(前进)回复于 2002-04-03 17:47:12 得分 20
应加上pWnd->GetWindowRect((&rect);Top
3 楼2ndboy(贱男春)回复于 2002-04-03 17:47:39 得分 0
GetWindowRect
GetClientRectTop
4 楼huqiming(Super)回复于 2002-04-03 17:49:09 得分 0
CRect rc;
CWnd* pWnd=GetDlgItem(IDC_BtonOK );//按钮控件
pWnd->GetWindowRect(rc);
this->ScreenToClient(&rect);///this而不是pWnd
Top
5 楼Meathead(阿森)回复于 2002-04-03 18:09:54 得分 20
CRect buttonrect;
CWnd* pWndOk = (CWnd *)GetDlgItem(IDOK);
pWndOk->GetClientRect(&buttonrect);
就可以了.Top
6 楼zyhtz(海阔天空)回复于 2002-04-03 18:53:48 得分 0
对不起,我刚才漏了pWnd->GetWindowRect(&rect);
但问题是我加了pWnd->GetWindowRect(&rect);,也没用Top
7 楼eastrock(东方之石)回复于 2002-04-03 19:27:41 得分 0
pWnd->ScreenToClient (&rect)这句话有加没加,你都试一下Top
8 楼zyhtz(海阔天空)回复于 2002-04-03 21:45:21 得分 0
我试过了但没用,也不知是什么原因Top
9 楼joshua0137(joshua)回复于 2002-04-04 00:45:09 得分 0
GetWindowRect() => ScreenToClient()Top
10 楼hnyyy(前进)回复于 2002-04-04 07:01:35 得分 20
用再笨一点的办法肯定行
CRect r;CPoint p;
GetDlgItem(IDC_XX)->GetWindowRect(&r);
p.x=r.left;
p.y=r.top;//试一下用top还是bottom
ScreenToClient(&p);
r.SetRect(p.x,p.y,p.x+r.Width(),p.y-r.r.Height()/*不知用-还是+*/);
r.NormalizeRect();Top
11 楼huqiming(Super)回复于 2002-04-04 12:38:55 得分 20
this->ScreenToClient(rect);///this而不是pWnd
而且可以不加"&"符号。
关键是ScreenToClient函数的调用窗口指针,不是控件的,而是他的父窗口。Top




