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 文件夹即可。它们将立即可用。


