请问,我可不可以把FromView的背景刷成白颜色的?怎么刷?

解决方案 »

  1.   


    BOOL CPrintView::OnEraseBkgnd(CDC* pDC) 
    {
    // TODO: Add your message handler code here and/or call default
    // 设置所要求背景色的刷子
       CBrush backBrush(RGB(225, 225, 225));
        // 保存旧刷子
        CBrush* pOldBrush = pDC->SelectObject(&backBrush);
        CRect rect;
        pDC->GetClipBox(&rect);     // 擦除所需的区域
           pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
        
        pDC->SelectObject(pOldBrush);
        return TRUE;
    return CFormView::OnEraseBkgnd(pDC);
    }HBRUSH CPrintView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here
    CRuntimeClass* prt=pWnd->GetRuntimeClass();
    switch (nCtlColor)
    {
    //case CTLCOLOR_LISTBOX:
    case CTLCOLOR_STATIC:
    {
                   pDC->SetBkMode(TRANSPARENT);

                   COLORREF    color;
                   //color = (COLORREF) GetSysColor(COLOR_BTNFACE);
         color=0x00E1E1E1;
       delete back_brush;
                   back_brush = new CBrush(color);
                   return (HBRUSH) (back_brush->m_hObject);
       break;
    }

    case CTLCOLOR_EDIT:
    {
    if(pWnd==GetDlgItem(IDC_EDIT_DISCOUNT5) && m_bDiscount5==FALSE){
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(255,0,0));
    }else if(pWnd==GetDlgItem(IDC_EDIT_DISCOUNT6) && m_bDiscount6==FALSE){
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(255,0,0));
    }else if(pWnd==GetDlgItem(IDC_EDIT_ANJIE) && m_banjie==FALSE){
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(255,0,0));
    }else if(pWnd==GetDlgItem(IDC_EDIT_ANJIEER) && m_banjieer==FALSE){
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(255,0,0));

    }
    } return hbr;
    }
      

  2.   

    OnCtlColor中直接
    //if (nCtlColor == CTLCOLOR_DLG )
    return (HBRUSH) ::CreateSolidBrush(RGB ( 255, 255, 255 ) );