小弟在对话框中做了一个进度条,并在一个STATIC中显示进度的百分比。问题是运行时STATIC上显示百分比时闪烁得厉害,应该是重画问题,该怎么解决?(STATIC的背景颜色和对话框的颜色都改成蓝色,但不改也是一样)

解决方案 »

  1.   

    去找CMemDC, www.codeproject.com
      

  2.   

    不要把画图语句放在OnDraw中。
      

  3.   

    abc_rain():是STATIC中的文字闪得厉害。比如我要显示“%d complete”,这个字串闪得厉害。
    cndv3996(东耳先生):我没有那样做。
    下面是我的原代码,大家帮我看看该怎么改:void newdialog::OnButtonRock() 
    {        CProgressCtrl* pProg=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS);
    pProg->SetRange(0,10000);
    pProg->SetStep(1);
    CString str;
    for(int i=0;i<10000;i++)
    {
    pProg->StepIt();
    str.Format("%d%%complete",i*100/10000);
    SetDlgItemText(IDC_STATIC,str);
    }
    }
      

  4.   

    最好是继承一个CStatic, 在派生类中调用自己的绘图函数.然后, 重载OnEraseBkgnd(), 什么也不作. 在OnPaint函数里面自己绘制背景颜色和文字.