用mfc开发的activx控件,加入了常用属性backcolor,forecolor,在构造函数里用
SetForeColor(RGB (255,255,255));
SetBackColor(RGB (31,92,203));
设值,想在ondraw()里显示,
CBrush *pBrush=new CBrush(GetBackColor());
pdc->FillRect(&rcBounds,pBrush);
pdc->SetTextColor(GetForeColor());
pdc->SetBkColor(GetBackColor());
结果根本没有效果,怎么回事?

解决方案 »

  1.   

    //handling the WM_CTLCOLORDLG message,such as
    MESSAGE_HANDLER(WM_CTLCOLORDLG, OnColorDlg)
    MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorDlg)
    ...
    #define MY_BACKCOLOR RGB(192,192,255)
    // -------------------------------------------------------------------------
    ------
    CMyControl::CMyControl() {
    LOGBRUSH logbrush;
    logbrush.lbColor = MY_BACKCOLOR;
    logbrush.lbStyle = BS_SOLID;
    m_hbrMyBack=CreateBrushIndirect(&logbrush);
    }
    //
    //
    // -------------------------------------------------------------------------
    ------
    LRESULT CMyControl::OnColorDlg(UINT uMsg, WPARAM wParam, LPARAM lParam,
    BOOL& bHandled){bHandled = TRUE;
    ::SetBkColor((HDC) wParam, MY_BACKCOLOR); return (LRESULT)m_hbrMyBack;
    };