靜態&動態更改MFC控件顏色&字體
一、靜態設置字體及顏色
1.dlg類下創建字體
CFont *m_pFont;//創建新的字體
2.字體的定義
m_pFont->CreateFont(32, // 字體高度
0, // 字體寬度
0, // 字體傾斜角
0, // 字體傾斜角
FW_EXTRALIGHT, // 字體的粗細
FALSE, // 字體是否爲斜體
FALSE, // 字體是否有下劃線
0, // 字體是否有刪除線
ANSI_CHARSET, // 字體使用的字符集
OUT_DEFAULT_PRECIS, // 指定如何選擇合適的字體
CLIP_DEFAULT_PRECIS, // 確定裁剪的精度
DEFAULT_QUALITY, // 怎麼樣跟選擇的字體相符合
DEFAULT_PITCH | FF_SWISS, // 間距標誌和屬性標誌
_T("楷體")); // 字體的名稱
3.在OnInitDialog()添加
GetDlgItem(IDC_S1)->SetFont(m_pFont);//設置控件ID爲IDC_S1的控件顏色爲m_pFont
二、靜態、動態設置控件顏色
1. 給對話框添加消息響應WM_CTLCOLOR。
2.定義類成員,畫刷
CBrush m_brush;
3.定義畫刷
m_brush.CreateSolidBrush(RGB(255,0,0)); // 生成一紅色刷子
4.對消息響應WM_CTLCOLOR的響應函數進行編輯。通過更改flag的值動態改變控件的顏色
HBRUSH CMFCApplication1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDC_S2)//特定的某一個標籤,IDC_STATIC_FONT爲標籤控件ID
{
pDC->SetBkMode(TRANSPARENT);//透明
pDC->SetTextColor(RGB(255, 0, 255)); //文字顏色
pDC->SetBkColor(RGB(251, 0,0));//背景色
return m_brush1;//返回的顏色就是要設置的顏色
}
if (pWnd->GetDlgCtrlID() == IDC_S1&&flag1==true)//IDC_STATIC_FONT爲標籤控件ID
{
pDC->SetBkMode(TRANSPARENT);//透明
pDC->SetTextColor(RGB(0, 0, 255)); //文字顏色
pDC->SetBkColor(RGB(251, 0,0));//背景色
return m_brush4;
}
if (pWnd->GetDlgCtrlID() == IDC_S1&&flag1==false)//IDC_STATIC_FONT爲標籤控件ID
{
pDC->SetBkMode(TRANSPARENT);//透明
pDC->SetTextColor(RGB(0, 0, 255)); //文字顏色
pDC->SetBkColor(RGB(251, 0,0));//背景色
return m_brush5;
}
if(nCtlColor ==CTLCOLOR_DLG)//設置對話框顏色
{
return m_brush5;
}
//return hbr;//此處也可以設置對話框顏色
}
5.需要刷新時要添加。略有閃爍,尚未解決
Invalidate();
UpdateWindow();