一个简单字体察看器的实现
2010-07-11 20:44:29 来源:WEB开发网为IDC_EENTERED添加EN_CHANGE事件消息函数:
void CFontsViewDlg::OnEnChangeEentered()
{
// TODO: 如果该控件是 RICHEDIT 控件,则它将不会
// 发送该通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
m_strDisplay=m_strEntered;
UpdateData(FALSE);
}
OK,再编译一下看看:)
虽然有了显示,但是它还不能根据选定字体来进行变换,所以我们必须添加一个变量来设置和改变字体。在CFontsViewDlg类中添加一个变量,变量类型为CFont变量名设为m_fSetFont,访问类型为Private。再添加一个函数,用来显示和选用字体。在CFontsViewDlg类中,添加函数,类型设为void,函数名为 SetMyFont,访问为 Private。代码如下:
void CFontsViewDlg::SetMyFont(void)
{
CRect rRect;
if(m_strFontName.GetLength()>0)
{
m_ctlDisplay.GetWindowRect(&rRect);
m_fSetFont.Detach();
m_fSetFont.CreateFont((rRect.Height()-5),
0,0,0,FW_NORMAL,
0,
0,
0,
DEFAULT_CHARSET,
OUT_CHARACTER_PRECIS,
CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|FF_DONTCARE,
m_strFontName);
m_ctlDisplay.SetFont(&m_fSetFont);
}
}
最后给 IDC_LFONTS 添加一个 LBN_SELCHANGE 事件消息函数就大功告成了:
void CFontsViewDlg::OnLbnSelchangeLfonts()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
SetMyFont();
}
基本上要实现的功能都有了,如果大家还想进一步完善,可以具体参考以下MSDN对CreateFont函数的定义,然后对他进行参数传递,就能实现诸如斜体,改变字号,下画线等功能。
编译环境:WindowsXP+ Microsoft Visual C++ .NET
本文配套源码
更多精彩
赞助商链接