最近正在学习VC,用的是北京希望公司的《VC++6.0技术内幕(第五版)》,第121页有这样一个程序,用来在对话框中的静态文本控件中画方框,程序如下:
void CMyDialog::Onpaint()
{
    CWnd *pWnd=GetDlgItem(IDC_STATIC1);//IDC_STATIC1是文本控件的ID
    CDC  *pContorlDC=pWnd->GetDC();
    pWnd->Invalidate();
    pWnd->UpdateWindow();
    pContorlDC->SelectStockObject(BLACK_BRUSH);
    pControlDC->Rectangle(0,0,10,10);
    pWnd->ReleaseDC(pControlDC); 
}
程序运行后,当移动对话框后,对话框内的其它控件无法正常显示,而对话框原来所在的位置显示也有问题。
请高手指点。

解决方案 »

  1.   

    在这段代码前调用CDialog::OnPaint();
      

  2.   

    呵呵,少了一行代码void CMyDialog::Onpaint()
    {
        CWnd *pWnd=GetDlgItem(IDC_STATIC1);//IDC_STATIC1是文本控件的ID
        CDC  *pContorlDC=pWnd->GetDC();
        pWnd->Invalidate();
        pWnd->UpdateWindow();
        pContorlDC->SelectStockObject(BLACK_BRUSH);
        pControlDC->Rectangle(0,0,10,10);
        pWnd->ReleaseDC(pControlDC); 
        CDialog::OnPaint();
    }
    不然没人刷新,怎么能正常显示呢
      

  3.   

    CDialog::OnPaint();
    加在最后。