包含组合框控件的工具栏按钮,允许用户从系统字体列表中选择字体。
语法
class CMFCToolBarFontComboBox : public CMFCToolBarComboBoxButton
成员
受保护构造函数
| 名称 | 描述 | 
|---|---|
| CMFCToolBarFontComboBox::CMFCToolBarFontComboBox | 构造 CMFCToolBarFontComboBox对象。 | 
公共方法
| 名称 | 描述 | 
|---|---|
| CMFCToolBarFontComboBox::GetFontDesc | 为组合框中的指定索引返回一个指向 CMFCFontInfo对象的指针。 | 
| CMFCToolBarFontComboBox::SetFont | 根据字体名称或字体的前缀和字符集,选择字体组合框中的字体。 | 
数据成员
CMFCToolBarFontComboBox::m_nFontHeight
字体组合框中字符的高度。
备注
若要将字体组合框按钮添加到工具栏,请执行以下步骤:
- 在父级工具栏资源中保留该按钮的虚拟资源 ID。 
- 构造一个 - CMFCToolBarFontComboBox对象。
- 在处理 AFX_WM_RESETTOOLBAR 消息的消息处理程序中,使用 CMFCToolBar::ReplaceButton 将原始按钮替换为新的组合框按钮。 
- 使用 CMFCToolBarFontComboBox::SetFont 方法将组合框中选择的字体与文档中的字体同步。 
若要将文档的字体与组合框中选定的字体同步,请使用 CMFCToolBarFontComboBox::GetFontDesc 方法检索所选字体的属性,并使用这些属性创建 CFont 类对象。
字体组合框按钮调用 Win32 函数 EnumFontFamiliesEx 来确定可供系统使用的屏幕和打印机字体。
继承层次结构
要求
头文件: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
演练:将控件置于工具栏上