我正在尝试移动基类为CWnd的自定义按钮,我正在使用MoveWindow()方法,但每次移动窗口时,先前绘制的窗口仍然可见。我试图在父窗口上调用InvalidateWindow,InvalidateRect和UpdateWindow,但都没有工作。我也试过RedrawWindow什么都没发生。如何使用按钮的新位置正确更新父窗口? 这是我的示例代码
void CCalendarCtrl::Shift()
{
RECT rc;
m_Up.GetWindowRect(&rc);
rc.top -= 20;
rc.bottom -=20;
m_Up.MoveWindow(&rc,TRUE);
RedrawWindow();
}
答案 0 :(得分:1)
在movewindow()之后调用Invalidate()。
答案 1 :(得分:1)
GetWindowRect返回屏幕坐标。 MoveWindow使用客户端坐标。所以你需要在两次调用之间做ScreenToClient(& rc)。