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; }
