我采用如下代码:
void CMFCDlg::OnButton1() 
{
CPaintDC dc(this); 
CBrush brush; 
brush.CreateSolidBrush(RGB(0, 0, 255)); 
dc.SelectObject(brush); 
dc.Ellipse( 250, 250, 300, 300);
CDialog::OnPaint();

this->SetWindowText("N+1");
}
此代码仅能实现给窗体改名的功能,不能在窗体中画下图形。把斜体部分放入
void CMFCDlg::OnPaint() 
{
 else{     
     斜体代码;
}
}下能够实现画图,请高手指点下。

解决方案 »

  1.   

    CDialog::OnPaint();
    会刷新界面,刚刚绘制过的被清除了。你可以先试试去掉这一句会不会有显示。想实现绘图就在OnPaint()里面绘制,界面刷新了也可以显示。
      

  2.   

    谢谢,我在void CMFCDlg::OnPaint()中去掉了OnPaint 就ok了~,谢谢!
      

  3.   

    如果非要在点击按钮的时候绘图,可以这样:
    设置一个全局BOOL类型变量:boolTemp
    void CMFCDlg::OnButton1() 
    {
        boolTemp = TRUE; 
        Invalidate(TRUE); 
    }
    在OnPaint函数中的else代码块中这样写:
    if(boolTemp)
    {
        CPaintDC dc(this); 
        CBrush brush; 
        brush.CreateSolidBrush(RGB(0, 0, 255)); 
        dc.SelectObject(brush); 
        dc.Ellipse( 250, 250, 300, 300);
        boolTemp = FALSE;
    }
      

  4.   

    不要使用CPaintDC,你又不是在OnPaint函数中,改用CClientDC
      

  5.   

    void CMFCDlg::OnButton1() 
    {
    //CPaintDC dc(this);
    CDC *pDC = GetDC();
    //CBrush brush; 
    //brush.CreateSolidBrush(RGB(0, 0, 255)); 
    CBrush br(RGB(0, 0, 255));
    //dc.SelectObject(brush); 
    //dc.Ellipse( 250, 250, 300, 300);
    //CDialog::OnPaint();
    CBrush *pOldBr = pDC->SelectObject(&br);
    pDC->Ellipse(255, 255, 300, 300);
    pDC->SelectObject(pOldBr);
    ReleaseDC(pDC);
    this->SetWindowText("N+1");
    }
      

  6.   

    void CMFCDlg::OnButton1() 
    {
    //CPaintDC dc(this);
    CDC *pDC = GetDC();
    //CBrush brush; 
    //brush.CreateSolidBrush(RGB(0, 0, 255)); 
    CBrush br(RGB(0, 0, 255));
    //dc.SelectObject(brush); 
    //dc.Ellipse( 250, 250, 300, 300);
    //CDialog::OnPaint();
    CBrush *pOldBr = pDC->SelectObject(&br);
    pDC->Ellipse(255, 255, 300, 300);
    pDC->SelectObject(pOldBr);
    ReleaseDC(pDC);
    this->SetWindowText("N+1");
    }