1. 程式人生 > >在MFC中修改對話方塊、編輯框、button按鈕背景色

在MFC中修改對話方塊、編輯框、button按鈕背景色

一、修改對話方塊背景色:
1、為目標對話方塊新增WM_CTRCOLOR訊息;
2、位目標Dlg類定義一個CBrush型別的私有成員變數:m_brushBg,並在其建構函式中將此畫刷初始為
一個淡藍色畫刷(畫刷顏色可任意修改):m_brushBg.CreateSolidBrush(RGB(95, 235, 245));
3、在OnCtlColor響應函式返回時返回自定義畫刷:m_brushBg。

二、修改靜態編輯框Static Text背景色:

1、為靜態編輯框新增一個CBrush型別的私有成員變數:m_brushStatic1,在建構函式中初始化:
m_brushStatic1.CreateSolidBrush(RGB(95, 235, 245));
2、在OnCtlColor函式中新增如下程式碼:
if (pWnd->GetDlgCtrlID() == IDC_STATIC1)//如果是靜態編輯框
{
pDC->SetTextColor(RGB(0, 0, 0));//修改字型的顏色
pDC->SetBkMode(TRANSPARENT);//把字型的背景變成透明的
return m_brushStatic1;//返回背景色
}

三、修改編輯框Edit Control背景色和字型:

1、為靜態編輯框新增一個CBrush型別的私有成員變數:m_brushEdit1,在建構函式中初始化:
m_brushEdit1.CreateSolidBrush(RGB(45, 255, 100));
2、在OnCtlColor函式中新增如下程式碼:
if(pWnd->GetDlgCtrlID()==IDC_EDIT1)//如果是編輯框
    {
        pDC->SetTextColor(RGB(255,0,0));//設定編輯框字型的顏色


        pDC->SetBkColor(RGB(255,255,0));//設定字型背景顏色
             
        return m_brush;


    }

四、修改button按鈕背景色:

1、將所有button修改為owner draw 型別,(在適當的位置新增下面的語句:
afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);ON_WM_DRAWITEM())
2、過載OnDrawItem訊息函式,新增程式碼(即可實現對所有button按鈕顏色修改):
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);


CString strText;
((CButton *)GetDlgItem(nIDCtl))->GetWindowText(strText);


SetBkMode(lpDrawItemStruct->hDC, TRANSPARENT);
//if (lpDrawItemStruct->itemState&ODS_SELECTED)
{
CBrush brush(RGB(255, 80, 80));
dc.FillRect(&(lpDrawItemStruct->rcItem), &brush);
DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(),
&lpDrawItemStruct->rcItem, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
SetBkMode(lpDrawItemStruct->hDC, TRANSPARENT);
}
dc.Detach();