一父窗口A中创建一模态的子窗口B,想要实现子窗口激活时在刷新子窗口的同时也刷新父窗口。我在子窗口的OnActivate函数里面
this->GetParent()->GetClientRect(parentRect);
InvalidateRect(parentRect); 
UpdateWindow();
达不到效果。

解决方案 »

  1.   

    InvalidateRect(parentRect);  在Invalidate谁的Rect啊?
      

  2.   

    this->GetParent()->GetClientRect(parentRect);
    这一句难道没有获得父窗口的rect吗?
      

  3.   

    先不说别的,你为什么不使用this->GetParent()->InvalidateRect(parentRect);  这种方式呢?上面怎么用的,这句就不能照搬?
      

  4.   

    GetParent()->GetClientRect(parentRect);
    GetParent()->InvalidateRect(parentRect);
    GetParent()->UpdateWindow();this ???
      

  5.   

    楼上的意思是不用this,直接GetParent()吗?
      

  6.   

    这里用不用this不是问题的关键。
    GetParent()本身就相当于this->GetParent()了。
    而这里的this指的是你模态窗口的指针。所以你InvalidateRect(parentRect); 
    相当于this->InvalidateRect(parentRect); 你这里宣示的只是模态窗口的无效区域。
    UpdateWindow();这一句也一样。这只是让你的模态窗口刷新,
    明白问题关键所在了就好办了。你的操作是针对父窗口的,所以应该用父窗口句柄来调用InvalidateRect(parentRect);UpdateWindow();