请问在对话框或CFormView中做一示波器,不管是直接用CDC函数还是用位图BitBlt方法,其背景(黑色)(示波器只是对话框的一部分,并不是整个对话框的背景是黑色)总是在闪,程序中创建了一定时器,一秒响应一次(重绘一次实时曲线),黑色背景是创建一黑色的画刷,然后用画笔画一矩形后用画刷刷黑,其后画曲线,基本情况是这样,环境是VC6,WIN98,恳请各路高手指点迷津,不胜感激。

解决方案 »

  1.   

    HBRUSH CPowerTest::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    HBRUSH m_hBrush=CreateSolidBrush(RGB(0,0,0));
    CPoint pt(0,0); if (this == pWnd)
    {

    CRect rc;
    pWnd->GetWindowRect(&rc);
    ScreenToClient(&rc);
    pt.x = -(rc.left + GetSystemMetrics(SM_CXDLGFRAME) - 1) % 55;
    pt.y = -(rc.top + GetSystemMetrics(SM_CYDLGFRAME) - 1)% 53;
    brush.UnrealizeObject(); 
        pDC->SetBrushOrg(pt); 
            return (HBRUSH)brush;
    }

    if(nCtlColor==CTLCOLOR_STATIC) //控件类型 CTLCOLOR_STATIC
    {
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(0,255,0));//字体颜色 pDC->SelectObject (&m_font);
    return (HBRUSH)m_hBrush;
    } // TODO: Return a different brush if the default is not desired
    return hbr;
    }在这理定意就行了