欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

字体对话框的使用

程序员文章站 2022-07-03 21:44:18
...

新建一个基于对话框的MFC应用程序FontDialogTest,删除对话框中原有控件。
添加一个按钮,名称上“设置字体”。
切换到类视图,双击CFontDialogTestDlg,为类CFontDialogTestDlg添加两个成员变量:

LOGFONT m_font;	
COLORREF m_clr;

其中,m_font用来保存选择的字体,m_clr用来保存所选的字体颜色。
打开函数CFontDialogTestDlg::OnInitDialog(),在末尾return TRUE;前添加代码如下:

    m_font.lfHeight=25;
	m_font.lfWidth=0;
	m_font.lfEscapement=0;
	m_font.lfOrientation=0;
	m_font.lfWeight=FW_NORMAL;
	m_font.lfItalic=FALSE;
	m_font.lfUnderline=FALSE;
	m_font.lfStrikeOut=FALSE;
	m_font.lfCharSet=GB2312_CHARSET;
	m_font.lfOutPrecision=OUT_STROKE_PRECIS;
	m_font.lfClipPrecision=CLIP_STROKE_PRECIS;
	m_font.lfQuality=DRAFT_QUALITY;
	m_font.lfPitchAndFamily=VARIABLE_PITCH|FF_MODERN;
	_tcscpy(m_font.lfFaceName, _T("黑体"));

	m_clr = RGB(0,0,255);

	Invalidate();

这段代码主要初始化字体和颜色变量。
打开类CFontDialogTestDlg的成员函数OnPaint(),在else后面添加代码如下:

else
	{
		CPaintDC dc(this); // 用于绘制的设备上下文
		CFont NewFont;
		CFont *pOldFont;
		NewFont.CreateFontIndirect(&m_font);
		pOldFont = dc.SelectObject(&NewFont);
		dc.SetTextColor(m_clr);
		dc.TextOut(20,20,_T("你好,本例为字体对话框测试。"));
		dc.SelectObject(pOldFont);

		CDialogEx::OnPaint();
	}

双击按钮,添加事件代码如下:

void CFontDialogTestDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	CFontDialog dlg;
	dlg.m_cf.lpLogFont = &m_font;
	dlg.m_cf.rgbColors = m_clr;
	dlg.m_cf.Flags |= CF_INITTOLOGFONTSTRUCT;
	if(dlg.DoModal()==IDOK)
	{
		dlg.GetCurrentFont(&m_font);
		m_clr = dlg.GetColor();
		Invalidate();
	}
}

保存工程并运行,结果如图所示:
字体对话框的使用

字体对话框的使用
字体对话框的使用