1. 程式人生 > >MFC 控制元件字型樣式和顏色設定

MFC 控制元件字型樣式和顏色設定

    因為預設的字型大小比較小,且有時為了美觀,MFC控制元件的字型樣式更改有時顯得比較重要。這一修改並不是很直觀,需要經由程式碼來完成,程式碼如下:

CFont *m_pFont;//建立新的字型
m_pFont = new CFont;
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("楷體"));				         // 字型的名稱

//標籤控制元件
m_EditControl.SetFont(m_pFont, false);	//將編輯框與設定字型相關聯
//按鈕控制元件
mybutton.SetFont(m_pFont, false);//對於按鍵也同理,mybutton為CButton物件
//列表控制元件
list.SetFont(m_pFont, false);//list為CListCtrl物件
list.InsertColumn(0, _T("學號"), LVCFMT_LEFT, 110);
list.InsertColumn(1, _T("姓名"), LVCFMT_LEFT, 110);
    要改變控制元件的字型顏色則更加複雜一點,需要做以下幾點

    1.定義畫刷物件

CBrush m_Brush;//畫刷工具
2.初始化畫刷物件
m_Brush.CreateSolidBrush(GetSysColor(COLOR_3DFACE));//初始化畫刷,用GetSysColor返回對話方塊背景色
    3.新增對話方塊的WM_CTLCOLOR訊息相應

    4.在對話方塊的訊息響應函式中新增如下程式碼

if (nCtlColor == CTLCOLOR_STATIC)//CTLCOLOR_STATIC為標籤控制元件
{
	if (pWnd->GetDlgCtrlID() == IDC_STATIC_FONT)//特定的某一個標籤,IDC_STATIC_FONT為標籤控制元件ID
	{
		pDC->SetBkMode(BKMODE_LAST);//透明
		pDC->SetTextColor(RGB(255, 0, 0)); //文字顏色  
		//pDC->SetBkColor(RGB(251, 247, 200));//背景色
		return (HBRUSH)m_Brush.GetSafeHandle();
	}
}
    經過上面的操作,可以得到如下的效果:                       未修改原圖                                        修改後影象