CMFCToolBarFontComboBox 类

包含组合框控件的工具栏按钮,允许用户从系统字体列表中选择字体。

语法

class CMFCToolBarFontComboBox : public CMFCToolBarComboBoxButton

成员

受保护构造函数

名称 描述
CMFCToolBarFontComboBox::CMFCToolBarFontComboBox 构造 CMFCToolBarFontComboBox 对象。

公共方法

名称 描述
CMFCToolBarFontComboBox::GetFontDesc 为组合框中的指定索引返回一个指向 CMFCFontInfo 对象的指针。
CMFCToolBarFontComboBox::SetFont 根据字体名称或字体的前缀和字符集,选择字体组合框中的字体。

数据成员

CMFCToolBarFontComboBox::m_nFontHeight
字体组合框中字符的高度。

备注

若要将字体组合框按钮添加到工具栏,请执行以下步骤:

  1. 在父级工具栏资源中保留该按钮的虚拟资源 ID。

  2. 构造一个 CMFCToolBarFontComboBox 对象。

  3. 在处理 AFX_WM_RESETTOOLBAR 消息的消息处理程序中,使用 CMFCToolBar::ReplaceButton 将原始按钮替换为新的组合框按钮。

  4. 使用 CMFCToolBarFontComboBox::SetFont 方法将组合框中选择的字体与文档中的字体同步。

若要将文档的字体与组合框中选定的字体同步,请使用 CMFCToolBarFontComboBox::GetFontDesc 方法检索所选字体的属性,并使用这些属性创建 CFont 类对象。

字体组合框按钮调用 Win32 函数 EnumFontFamiliesEx 来确定可供系统使用的屏幕和打印机字体。

继承层次结构

CObject

CMFCToolBarButton

CMFCToolBarComboBoxButton

CMFCToolBarFontComboBox

要求

头文件:afxtoolbarfontcombobox.h

CMFCToolBarFontComboBox::CMFCToolBarFontComboBox

构造 CMFCToolBarFontComboBox 对象。

public:
CMFCToolBarFontComboBox(
    UINT uiID,
    int iImage,
    int nFontType = DEVICE_FONTTYPE | RASTER_FONTTYPE | TRUETYPE_FONTTYPE,
    BYTE nCharSet = DEFAULT_CHARSET,
    DWORD dwStyle = CBS_DROPDOWN,
    int iWidth = 0,
    BYTE nPitchAndFamily = DEFAULT_PITCH);

protected:
CMFCToolBarFontComboBox(
    CObList* pLstFontsExternal,
    int nFontType,
    BYTE nCharSet,
    BYTE nPitchAndFamily);

CMFCToolBarFontComboBox();

参数

uiID
[in] 组合框的命令 ID。

iImage
[in] 工具栏图像的从零开始的索引。 该图像位于 CMFCToolBarImages 类对象中,该对象由 CMFCToolBar 类进行维护。

nFontType
[in] 组合框包含的字体类型。 此参数可以是以下值的组合(布尔与):

DEVICE_FONTTYPE

RASTER_FONTTYPE

TRUETYPE_FONTTYPE

nCharSet
[in] 如果设置为 DEFAULT_CHARSET,则组合框在所有字符集中都包含所有唯一命名的字体。 (如果两种字体同名,则组合框包含其中一种。)如果设置为有效的字符集值,则组合框仅包含指定字符集中的字体。 有关可能的字符集的列表,请参阅 LOGFONT

dwStyle
[in] 组合框的样式。 (请参阅组合框样式

iWidth
[in] 编辑控件的宽度(以像素为单位)。

nPitchAndFamily
[in] 如果设置为 DEFAULT_PITCH,则组合框将包含字体,不考虑间距。 如果设置为 FIXED_PITCH 或 VARIABLE_PITCH,则组合框仅包含使用该间距类型的字体。 目前不支持基于字体系列进行筛选。

pLstFontsExternal
[out] 一个指向存储可用字体的 CObList 类对象的指针。

注解

通常,CMFCToolBarFontComboBox 对象将可用字体列表存储在单个共享 CObList 对象中。 如果使用构造函数的第二个重载并提供指向 pLstFontsExternal 的有效指针,则该 CMFCToolBarFontComboBox 对象将改为使用可用字体来填充 pLstFontsExternal 指向的 CObList

示例

以下示例演示如何构造 CMFCToolBarFontComboBox 对象。 此代码片段属于 Word Pad 示例

CMFCToolBarFontComboBox *CFormatBar::CreateFontComboButton()
{
   // CSize m_szBaseUnits
   return new CMFCToolBarFontComboBox(IDC_FONTNAME,
                                      GetCmdMgr()->GetCmdImage(IDC_FONTNAME, FALSE),
                                      TRUETYPE_FONTTYPE | DEVICE_FONTTYPE,
                                      DEFAULT_CHARSET,
                                      WS_VISIBLE | WS_TABSTOP | WS_VSCROLL | CBS_DROPDOWN |
                                          CBS_AUTOHSCROLL | CBS_HASSTRINGS | CBS_OWNERDRAWFIXED,
                                      (3 * LF_FACESIZE * m_szBaseUnits.cx) / 2);
}

CMFCToolBarFontComboBox::GetFontDesc

为组合框中的指定索引返回一个指向 CMFCFontInfo 对象的指针。

const CMFCFontInfo* GetFontDesc(int iIndex=-1) const;

参数

iIndex
[in] 指定组合框项的从零开始的索引。

返回值

一个指向 CMFCFontInfo 对象的指针。 如果 iIndex 未指定有效的项索引,则返回值为 NULL。

CMFCToolBarFontComboBox::m_nFontHeight

如果组合框具有所有者描述样式,则指定字体组合框中字符的高度(以像素为单位)。

static int m_nFontHeight

备注

如果 m_nFontHeight 变量为 0,则根据组合框的默认字体自动计算高度。 高度包括基线上方的字符上升段和基线下方的字符下降段。

CMFCToolBarFontComboBox::SetFont

根据参数中指定的字体名称和字符集,选择字体组合框中的字体。

BOOL SetFont(
    LPCTSTR lpszName,
    BYTE nCharSet=DEFAULT_CHARSET,
    BOOL bExact=FALSE);

参数

lpszName
[in] 指定字体名称或前缀。

nCharSet
[in] 指定字符集。

bExact
[in] 指定 lpszName 是否包含字体名称或字体前缀。

返回值

如果已成功选择字体,则为非零值;否则为 0。

备注

如果 bExact 为 TRUE,则此方法选择与指定为 lpszName 的名称完全匹配的字体。 如果 bExact 为 FALSE,则此方法选择以指定为 lpszName 的文本开头并使用指定为 nCharSet 的字符集的字体。 如果 nCharSet 设置为 DEFAULT_CHARSET,将忽略字符集,仅使用 lpszName 来选择字体。

另请参阅

层次结构图

CMFCToolBar 类
CMFCToolBarButton 类
CMFCToolBarComboBoxButton 类
CMFCFontInfo 类
CMFCToolBar::ReplaceButton
演练:将控件置于工具栏上