Pocket PC 的字体选择器对话框






4.88/5 (11投票s)
实现一个带有预览和 ClearType 支持的字体选择对话框。
引言
本文档描述了为 Pocket PC 实现字体选择对话框的过程,具有以下特性:
- 字体渲染预览
- ClearType 支持
- 属性页实现
对话框布局基于 Pocket Excel,允许在 SIP 启用时使用该对话框。
实现
该对话框被实现为一个属性页,因此您可以在不修改的情况下在自己的属性表中将其使用。演示项目使用了我自己的 CCePropertySheet 类来封装它。
该类使用两个公共成员与用户交互:
m_logFont
:一个LOGFONT
变量,用于接收和返回字体定义。您可以在CreateFontIndirect
中立即使用它。m_strPreview
:一个CString
变量,用于接收要在预览中渲染的文本。默认值为“AaBbCcXxYyZz”。
字体枚举
字体族通过调用 EnumFontFamilies
进行枚举。此函数接收一个回调函数指针,该指针将填充字体组合框。当对话框初始化时,它会尝试将 m_logFont
中指定的字体与组合框的内容匹配。如果无法匹配字体名称和大小,对话框将在适当的组合框中设置名称和大小。对话框未准备好接收一个空的 m_logFont
,您必须在使用对话框之前填充它。
ClearType
ClearType 支持取决于您的系统是否支持它。请咨询您的供应商,确认您的设备是否支持 ClearType。
使用 ClearType 属性创建字体只需将 LOGFONT
结构的 lfQuality
成员指定为 5 即可。
使用对话框
使用对话框非常简单明了。
void CChildView::OnChooseFont() { CCePropertySheet sheet(_T("Choose Font")); CChooseFontPage page; // // Create the default font // page.m_logFont.lfHeight = -11; page.m_logFont.lfWidth = 0; page.m_logFont.lfEscapement = 0; page.m_logFont.lfOrientation = 0; page.m_logFont.lfWeight = FW_NORMAL; page.m_logFont.lfItalic = FALSE; page.m_logFont.lfUnderline = FALSE; page.m_logFont.lfStrikeOut = 0; page.m_logFont.lfCharSet = ANSI_CHARSET; page.m_logFont.lfOutPrecision = OUT_DEFAULT_PRECIS; page.m_logFont.lfClipPrecision = CLIP_DEFAULT_PRECIS; page.m_logFont.lfQuality = DEFAULT_QUALITY; page.m_logFont.lfPitchAndFamily = DEFAULT_PITCH | FF_SWISS; _tcscpy(page.m_logFont.lfFaceName, TEXT("Tahoma")); sheet.AddPage(&page); sheet.DoModal(); }
退出时,m_logFont
变量将具有新的字体定义,可以立即使用。
添加新字体
将新字体添加到您的设备非常简单:只需将您希望的桌面 TrueType 字体文件复制到设备的 \Windows\Fonts 文件夹即可。它们将立即可用。