這裏講述兩種改變MFC控件背景顏色的方法:
方法一:用OnCtlColor消息函數,改變特定控件的背景
首先在頭文件的類中定義CBush類的變量 brush 如語句:CBrush brush;
然後在源文件的構造函數中初始化:brush.CreateSolidBrush(RGB(255,0,0));
RGB( , , ) 控制顏色,分別爲紅,綠,藍,三個一樣顯示灰色背景,都爲255爲白色,都爲0爲黑色
然後再消息函數中寫代碼如下:
HBRUSH CFilePlayDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何屬性
// TODO: 如果默認的不是所需畫筆,則返回另一個畫筆
if(pWnd->GetDlgCtrlID() == IDC_FILE_PLAY)
{
pDC->SetBkColor(RGB(0,0,0));
HBRUSH brush = CreateSolidBrush(RGB(0,0,0));
return brush;
}
return hbr;
}
方法二:
也用這個消息函數
HBRUSH CFilePlayDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetBkColor(RGB(0,0,0));
HBRUSH b=CreateSolidBrush(RGB(0,0,0));
return b;
}
return hbr;
}
// 這裏指定控件類型爲靜態類型,可以指定爲其他類型,如CTLCOLOR_BTN 按鈕控件 · CTLCOLOR_DLG 對話框 · CTLCOLOR_EDIT 編輯控件 · CTLCOLOR_LISTBOX 列表框控件 · CTLCOLOR_MSGBOX 消息框 · CTLCOLOR_SCROLLBAR 滾動條控件 · CTLCOLOR_STATIC 靜態控件
這個方法省略了定義brush這個變量,直接在函數中用CreateSolidBrush生成一個畫刷b,然後返回b。