MFC中給各個控件填充背景顏色的方法


1.給程序設置大背景色,在OnPaint()函數中添加如下代碼:

CRect rect;
CPaintDC dc(this);
GetClientRect(rect);
dc.FillSolidRect(rect, RGB(255, 255, 255));
dc.FillPath();

2.給個控件修改背景顏色,先在類向導中添加WM_CTLCOLOR消息,然后就會自動添加OnCtColor()函數:

HBRUSH CMFCApplication1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    CRect rc;
    switch (pWnd->GetDlgCtrlID())
    {
    case IDC_STATIC_GROUP:  //像GROUP BOX控件要用FillSolidRect()函數來填充背景,我用SetBkColor()不起作用,不知道為什么
        GetDlgItem(IDC_STATIC_GROUP)->GetClientRect(&rc);
        pDC->FillSolidRect(rc, RGB(229, 245, 255));
        return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
    case IDC_STATIC1:
        pDC->SetBkColor(RGB(229, 245, 255));
        return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
    case IDC_STATIC2:
        pDC->SetBkColor(RGB(229, 245, 255));
        return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
    case IDC_STATIC3:
        pDC->SetBkColor(RGB(229, 245, 255));
        return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
    case IDC_STATIC4:
        pDC->SetBkColor(RGB(229, 245, 255));
        return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
    case IDC_STATIC_GROUP2:
        GetDlgItem(IDC_STATIC_GROUP2)->GetClientRect(&rc);
        pDC->FillSolidRect(rc, RGB(255, 255, 204));
        return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
    case IDC_STATIC:
        pDC->SetBkColor(RGB(255, 255, 204));
        return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
    case IDC_BUTTON2:
        GetDlgItem(IDC_BUTTON2)->GetClientRect(&rc);
        pDC->FillSolidRect(rc, RGB(229, 245, 255));
        return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
    default:
        return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    }
    return hbr;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM