靜態&動態更改MFC控件顏色&字體

靜態&動態更改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();





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