我在对话框上绘制了一个图形,但在对话框拖大的过程中,图形无法自动刷新,出现几个图形都绘制出来的情况,不知如何解决?
void CDlgUserInfo::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint() CRect rcClient;
GetClientRect(&rcClient);
CPen pen(PS_SOLID,1,RGB(255,0,0));
dc.SelectObject(&pen);
dc.RoundRect(&rcClient,CPoint(10,10));
}

解决方案 »

  1.   

    为CDlgUserInfo添加以下事件WM_SIZE的消息处理函数OnSize,并在该函数内调用Invalidate(TRUE)表示擦除原来窗口中内容void CDlgUserInfo::OnSize(UINT nType, int cx, int cy)
    {
    CDialog::OnSize(nType, cx, cy); // TODO: 在此处添加消息处理程序代码
    this->Invalidate(TRUE);
    }
      

  2.   

    CPaintDC得到的无效区域只有对话框变化的那么一小块,所以有你说的现象