我重画了一个空件
现在需要在操作的时候让父窗体刷新背景
像这样做
GetParetn()->InvalidateRect(&rt);
现在我在空件类里,这个rt应该怎么的到呢?

解决方案 »

  1.   

    1. 用GetWindowRect()取得你的控件的绝对坐标,
    2. 用MapWindowPoints()使你的绝对坐标转化为父窗体上的相对坐标.
    3. 用这个相对坐标生成RECT类数据带进去.
      

  2.   

    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);
      

  3.   

    么。丙说:我也不知这两个数是什么乙说:噢,我知道了丙说:噢,我也知道了。问这两个数是何?
    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());
      

  4.   

    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());