MFC中改變控件的背景顏色

這裏講述兩種改變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。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章