65.9K
CodeProject 正在变化。 阅读更多。
Home

Pocket PC 的字体选择器对话框

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.88/5 (11投票s)

2003年8月17日

CPOL

2分钟阅读

viewsIcon

70595

downloadIcon

276

实现一个带有预览和 ClearType 支持的字体选择对话框。

Sample Image - CeChooseFont.jpg

引言

本文档描述了为 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 文件夹即可。它们将立即可用。

© . All rights reserved.