CMFCToolBarFontComboBox 类
包含组合框控件的工具栏按钮,允许用户从系统字体列表中选择字体。
语法
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
演练:将控件置于工具栏上