如何得到一个控件在父窗体上的位置?

krosi 2003-12-30 12:13:08
我重画了一个空件
现在需要在操作的时候让父窗体刷新背景
像这样做
GetParetn()->InvalidateRect(&rt);
现在我在空件类里,这个rt应该怎么的到呢?
...全文
295 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
typhoon20 2004-01-04
  • 打赏
  • 举报
回复
CWnd *pWnd = GetDlgItem(IDC_UR_BUTTON);
CRect rect;
如果返回相对屏幕的坐标,那么:
pWnd->GetWindowRect(&rect);

如果返回相对对话框的左边那么:
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);

如果返回本身的尺寸大小
pWnd->GetClientRect(&rect); //此时rect.left, rect.top 都是0
//得到屏幕的尺寸大小
HWND hWnd;
CRect Rect;
hWnd = ::GetDesktopWindow();
::GetClientRect(hWnd, &Rect);
//将窗口移动到屏幕中央显示
CenterWindow(GetDesktopWindow());
typhoon20 2004-01-04
  • 打赏
  • 举报
回复
最上面一句话不是哦!
typhoon20 2004-01-04
  • 打赏
  • 举报
回复
么。丙说:我也不知这两个数是什么乙说:噢,我知道了丙说:噢,我也知道了。问这两个数是何?
CWnd *pWnd = GetDlgItem(IDC_UR_BUTTON);
CRect rect;
如果返回相对屏幕的坐标,那么:
pWnd->GetWindowRect(&rect);

如果返回相对对话框的左边那么:
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);
pWnd->GetClientRect(&rect); //此时rect.left, rect.top 都是0
//得到屏幕的尺寸大小
HWND hWnd;
CRect Rect;
hWnd = ::GetDesktopWindow();
::GetClientRect(hWnd, &Rect);
//将窗口移动到屏幕中央显示
CenterWindow(GetDesktopWindow());
akiy 2004-01-04
  • 打赏
  • 举报
回复
CRect r1,r2;
GetWindowRect(&r2);
GetParent()->GetWindowRect(&r1);
r2.OffsetRect( -(r1.left+10) , -(r1.top+20) );
r2.right += 10;
r2.bottom += 10;
GetParent()->InvalidateRect(&r2);
Zark 2003-12-30
  • 打赏
  • 举报
回复
1. 用GetWindowRect()取得你的控件的绝对坐标,
2. 用MapWindowPoints()使你的绝对坐标转化为父窗体上的相对坐标.
3. 用这个相对坐标生成RECT类数据带进去.

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧