设置组合框字体的大小

 

 示例1    设置组合框字体大小:

    组合框由两部分组成 

 

    一部分为编辑框  一部分为列表框

 

    为组合框捆绑一控件变量  m_comb_box

 

    编辑框和列表框中的字体 通过重载ctrcolor函数,捕捉编辑框和列表框分别实现:

 

 

 

 

     为编辑框设置字体

 

     在对话框初始函数   OnInitDialog() 中,为组合框变量设置字体setFont()

 

 

CFont m_font; m_font.CreateFont(50, 0, 0, 0, FW_BOLD, FALSE, FALSE, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, NULL); m_combo_box.setFont(&m_font)

 

     这样 组合框的列表框字体就设置成功了,但是列表框中的字体还未有改变

 

 

     列表框中的字体需要重载ctrcolor 捕捉CTLCOLOR_LISTBOX 组合框


 

 

 

 

HBRUSH CketangDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); CFont m_font; m_font.CreateFont(50, 0, 0, 0, FW_BOLD, FALSE, FALSE, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, NULL); switch(nCtlColor) { case CTLCOLOR_STATIC: //对所有静态文本控件的设置 case CTLCOLOR_BTN: { pDC->SelectObject(&m_font); pDC-> SetTextColor(RGB(255,0,0)); //字体颜色 pDC-> SetBkColor(RGB(0, 0, 255)); //字体背景色 pDC->SetBkMode(TRANSPARENT); m_font3.DeleteObject(); return (HBRUSH)::GetStockObject(NULL_BRUSH); } case CTLCOLOR_EDIT: //修改编辑框 { pDC->SelectObject(&m_font); pDC-> SetTextColor(RGB(0,0,255)); //字体颜色 pDC-> SetBkColor(RGB(0, 255, 0)); //字体背景色 pDC->SetBkMode(TRANSPARENT); m_font3.DeleteObject(); return (HBRUSH)::GetStockObject(LTGRAY_BRUSH); } case CTLCOLOR_LISTBOX: //修改LISTBOX列表框 { pDC->SelectObject(&m_font); pDC->SetBkColor(RGB(0,255,0)); pDC->SetTextColor(RGB(255,0,0)); pDC->SetBkMode(TRANSPARENT); m_font3.DeleteObject(); return (HBRUSH)::GetStockObject(LTGRAY_BRUSH); } default: return hbr } }

 

 


示例2   设置编辑框字体大小:

   

              编辑框1 需要改变字体    IDC_EDIT1   m_Edit  (控件变量)

              编辑框2 保持默认字体   IDC_EDIT2


1  初始化对话框

OnInitDialog()
{
	CDialog::OnInitDialog();

	// TODO:  在此添加额外的初始化

	CRect Rect;
	m_Edit.GetClientRect(&Rect);  //编辑框1的范围

	CFont  m_font;  
	m_font.CreateFont(Rect.Height(), 0, 0, 0,  
		FW_BOLD, FALSE, FALSE, 0,  
		DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,  
		CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,  
		FIXED_PITCH | FF_MODERN, NULL);   

	m_Edit.SetFont(&m_font);  


	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}

2 响应WM_CTRCOLOR消息

 WM_CTLCOLOR消息用来完成对EDIT、STATIC、BUTTON等控件设置背景和字体颜色


OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

	// TODO:  在此更改 DC 的任何属性



	if (pWnd==GetDlgItem(IDC_EDIT1))  //只当窗口是编辑框1时,才设置字体 其他情况保持默认状态
	{
		CRect Rect;
		m_Edit.GetClientRect(&Rect);


		CFont  m_font;  
		m_font.CreateFont(Rect.Height(), 0, 0, 0,  
			FW_BOLD, FALSE, FALSE, 0,  
			DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,  
			CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,  
			FIXED_PITCH | FF_MODERN, NULL);  

		pDC->SelectObject(&m_font);  
	}





	// TODO:  如果默认的不是所需画笔,则返回另一个画笔
	return hbr;
}


参考资料:

 

 

 

http://www.nokiamobile.org.cn/18_090809_1692492.html

http://topic.csdn.net/t/20040819/16/3290826.html

http://www.cppblog.com/xbgs/archive/2006/06/23/8940.html

你可能感兴趣的:(MFC)