在MFC中,默认的CPaintDC dc(this)中this的属性是const,是不可修改的,我现在程序需要对this重新赋值,是不是要修改this的cons的属性?怎么修改?

解决方案 »

  1.   

    “我现在程序需要对this重新赋值” 先解释下为何有这需求吧~
      

  2.   

    就这几句代码
    void ZFT::OnPaint() 
    {
    // CPaintDC dc(this); CRect rect;
    CWnd *pWnd;
    pWnd=GetDlgItem(IDC_Graphic);
    pWnd->GetClientRect(&rect);
    int i;
    CPaintDC dc(pWnd);

    dc.MoveTo(0,rect.Height());
    dc.LineTo(rect.Width(),rect.Height());
    dc.MoveTo(0,rect.Height());
    dc.LineTo(0,0);
    /* for(i=0;i<256;i++)
    {
    dc.MoveTo(i+1,rect.Height());
    dc.LineTo (i+1,(rect.Height()-rect.Height()*num[i]*30));
    }
    */
    }其中ZFT是一个对话框,如果我像现在这样使用pWnd,在程序运行时如果我移动该对话框,它就会留下移动轨迹,而且CPU使用100%,也就是对话框移动之前的那个框架不消失,还在屏幕上,但如果不使用pWnd,使用this就不会那样,当然,使用this就达不到我绘图的目的了,我也不知道怎么解决
      

  3.   

    pWnd=GetDlgItem(IDC_Graphic); 
    pWnd->GetClientRect(&rect); 
    int i; 
    CPaintDC dc(pWnd); 死循环了........
      

  4.   

    你应该在你这个IDC_Graphic控件内部进行绘图。