CHOOSEFONTA 结构 (commdlg.h)

包含 ChooseFont 函数用于初始化 字体 对话框的信息。 用户关闭对话框后,系统会返回有关此结构中用户选择的信息。

语法

typedef struct tagCHOOSEFONTA {
  DWORD        lStructSize;
  HWND         hwndOwner;
  HDC          hDC;
  LPLOGFONTA   lpLogFont;
  INT          iPointSize;
  DWORD        Flags;
  COLORREF     rgbColors;
  LPARAM       lCustData;
  LPCFHOOKPROC lpfnHook;
  LPCSTR       lpTemplateName;
  HINSTANCE    hInstance;
  LPSTR        lpszStyle;
  WORD         nFontType;
  WORD         ___MISSING_ALIGNMENT__;
  INT          nSizeMin;
  INT          nSizeMax;
} CHOOSEFONTA;

成员

lStructSize

类型:DWORD

结构的长度(以字节为单位)。

hwndOwner

类型:HWND

拥有对话框的窗口的句柄。 此成员可以是任何有效的窗口句柄,如果对话框没有所有者,则它可以为 NULL

hDC

类型: HDC

ChooseFont 函数会忽略此成员。

Windows Vista 和 Windows XP/2000: 打印机的设备上下文或信息上下文的句柄,其字体将在对话框中列出。 仅当 Flags 成员指定 CF_PRINTERFONTSCF_BOTH 标志时,才使用此成员;否则,将忽略此成员。

lpLogFont

类型: LPLOGFONT

指向 LOGFONT 结构的指针。 如果在 Flags 成员中设置 CF_INITTOLOGFONTSTRUCT 标志并初始化其他成员,则 ChooseFont 函数会使用与 LOGFONT 成员匹配的字体初始化对话框。 如果用户单击“ 确定” 按钮, ChooseFont 会根据用户的选择设置 LOGFONT 结构的成员。

iPointSize

类型: INT

所选字体的大小,以磅的 1/10 为单位。 ChooseFont 函数在用户关闭对话框后设置此值。

Flags

类型:DWORD

可用于初始化 “字体 ”对话框的一组位标志。 当对话框返回时,它将设置这些标志来指示用户输入。 此成员可以是以下一个或多个值。

Value 含义
CF_APPLY
0x00000200L
使对话框显示 “应用 ”按钮。 应提供挂钩过程来处理“应用”按钮WM_COMMAND消息。 挂钩过程可以将 WM_CHOOSEFONT_GETLOGFONT 消息发送到对话框,以检索包含当前字体选择的结构的地址。
CF_ANSIONLY
0x00000400L
此标志已过时。 若要将字体选择限制为除使用 OEM 或符号字符集的脚本以外的所有脚本,请使用 CF_SCRIPTSONLY。 若要获取原始CF_ANSIONLY行为,请使用 CF_SELECTSCRIPT 并在 lpLogFont 指向的 LOGFONT 结构的 lfCharSet 成员中指定ANSI_CHARSET
CF_BOTH
0x00000003
对于字体枚举,将忽略此标志。

Windows Vista 和 Windows XP/2000: 使对话框列出可用的打印机和屏幕字体。 hDC 成员是设备上下文或与打印机关联的信息上下文的句柄。 此标志是 CF_SCREENFONTSCF_PRINTERFONTS 标志的组合。

CF_EFFECTS
0x00000100L
使对话框显示允许用户指定删除线、下划线和文本颜色选项的控件。 如果设置了此标志,则可以使用 rgbColors 成员指定初始文本颜色。 可以使用 lpLogFont 指向的结构的 lfStrikeOutlfUnderline 成员指定删除线的初始设置和下划线检查框。 ChooseFont 可以使用这些成员返回用户的选择。
CF_ENABLEHOOK
0x00000008L
启用此结构的 lpfnHook 成员中指定的挂钩过程。
CF_ENABLETEMPLATE
0x00000010L
指示 hInstancelpTemplateName 成员指定要用于替代默认模板的对话框模板。
CF_ENABLETEMPLATEHANDLE
0x00000020L
指示 hInstance 成员标识包含预加载对话框模板的数据块。 如果指定了此标志,系统会忽略 lpTemplateName 成员。
CF_FIXEDPITCHONLY
0x00004000L

ChooseFont 应枚举并允许仅选择固定音调字体。

CF_FORCEFONTEXIST
0x00010000L

如果用户尝试选择对话框中未列出的字体或样式,ChooseFont 应指示错误条件。

CF_INACTIVEFONTS
0x02000000L

ChooseFont 还应另外显示设置为“在字体中隐藏”的字体控制面板。

Windows Vista 和 Windows XP/2000: 此标志在 Windows 7 之前不受支持。

CF_INITTOLOGFONTSTRUCT
0x00000040L

ChooseFont 应使用 lpLogFont 成员指向的结构来初始化对话框控件。

CF_LIMITSIZE
0x00002000L

ChooseFont 应仅选择 nSizeMinnSizeMax 成员指定的范围内的字号。

CF_NOOEMFONTS
0x00000800L
CF_NOVECTORFONTS 标志相同。
CF_NOFACESEL
0x00080000L
使用 LOGFONT 结构初始化对话框控件时,使用此标志可阻止对话框显示字体名称组合框的初始选择。 当没有单个字体名称应用于文本选择时,这非常有用。
CF_NOSCRIPTSEL
0x00800000L
禁用 “脚本 ”组合框。 设置此标志后,当 ChooseFont 返回时,LOGFONT 结构的 lfCharSet 成员将设置为 DEFAULT_CHARSET。 此标志仅用于初始化对话框。
CF_NOSIMULATIONS
0x00001000L

ChooseFont 不应显示或允许选择字体模拟。

CF_NOSIZESEL
0x00200000L
使用结构初始化对话框控件时,使用此标志可阻止对话框显示“ 字体大小 ”组合框的初始选择。 当没有单一字号适用于文本选择时,这非常有用。
CF_NOSTYLESEL
0x00100000L
使用 LOGFONT 结构初始化对话框控件时,使用此标志可阻止对话框显示“ 字体样式 ”组合框的初始选择。 当没有单一字体样式应用于文本选择时,这非常有用。
CF_NOVECTORFONTS
0x00000800L

ChooseFont 不应允许选择矢量字体。

CF_NOVERTFONTS
0x01000000L
导致“ 字体 ”对话框仅列出水平方向的字体。
CF_PRINTERFONTS
0x00000002
对于字体枚举,将忽略此标志。

Windows Vista 和 Windows XP/2000: 使对话框仅列出打印机支持的字体,这些字体与 hDC 成员标识的设备上下文或信息上下文相关联。 它还会导致字体类型说明标签显示在“ 字体 ”对话框的底部。

CF_SCALABLEONLY
0x00020000L
指定 ChooseFont 应仅允许选择可缩放字体。 可缩放字体包括矢量字体、可缩放打印机字体、TrueType 字体以及按其他技术缩放的字体。
CF_SCREENFONTS
0x00000001
对于字体枚举,将忽略此标志。

Windows Vista 和 Windows XP/2000: 使对话框仅列出系统支持的屏幕字体。

CF_SCRIPTSONLY
0x00000400L

ChooseFont 应允许为所有非 OEM 字符集和符号字符集以及 ANSI 字符集选择字体。 这将取代 CF_ANSIONLY 值。

CF_SELECTSCRIPT
0x00400000L
在输入时指定时,仅显示 LOGFONT 结构的 lfCharSet 成员中标识的字符集的字体。 不允许用户更改 脚本组合框中 指定的字符集。
CF_SHOWHELP
0x00000004L
使对话框显示“ 帮助 ”按钮。 hwndOwner 成员必须指定用于接收用户单击“帮助”按钮时对话框发送的 HELPMSGSTRING 注册消息的窗口。
CF_TTONLY
0x00040000L

ChooseFont 应仅枚举并允许选择 TrueType 字体。

CF_USESTYLE
0x00000080L
lpszStyle 成员是指向包含样式数据的缓冲区的指针,ChooseFont 应使用该数据初始化字体样式组合框。 当用户关闭对话框时, ChooseFont 会将用户选择的样式数据复制到此缓冲区。
注意若要全球化应用程序,应使用 lpLogFont 指向的 LOGFONT 结构的 lfWeightlfItalic 成员来指定样式。 样式名称可能会根据系统用户界面语言而更改。
 
CF_WYSIWYG
0x00008000L
已过时。 ChooseFont 忽略此标志。

Windows Vista 和 Windows XP/2000: ChooseFont 应仅允许选择打印机和显示器上可用的字体。 如果指定了此标志,则还应指定 CF_SCREENSHOTSCF_PRINTERFONTSCF_BOTH 标志。

rgbColors

类型: COLORREF

如果设置了 CF_EFFECTS 标志, rgbColors 将指定初始文本颜色。 当 ChooseFont 成功返回时,此成员包含用户选择的文本颜色的 RGB 值。 若要创建 COLORREF 颜色值,请使用 RGB 宏。

lCustData

类型:LPARAM

系统传递给 由 lpfnHook 成员标识的挂钩过程的应用程序定义数据。 当系统将 WM_INITDIALOG 消息发送到挂钩过程时,消息的 lParam 参数是指向创建对话框时指定的 CHOOSEFONT 结构的指针。 挂钩过程可以使用此指针获取 lCustData 值。

lpfnHook

类型: LPCFHOOKPROC

指向 CFHookProc 挂钩过程的指针,该过程可以处理用于对话框的消息。 除非在 Flags 成员中设置了CF_ENABLEHOOK标志,否则将忽略此成员。

lpTemplateName

类型: LPCTSTR

hInstance 成员标识的模块中对话框模板资源的名称。 此模板将替换为标准对话框模板。 对于编号对话框资源, lpTemplateName 可以是 MAKEINTRESOURCE 宏返回的值。 除非在 Flags 成员中设置了CF_ENABLETEMPLATE标志,否则将忽略此成员。

hInstance

类型: HINSTANCE

如果在 Flags 成员中设置了CF_ENABLETEMPLATEHANDLE标志,则 hInstance 是包含对话框模板的内存对象的句柄。 如果设置了 CF_ENABLETEMPLATE 标志, 则 hInstance 是包含由 lpTemplateName 成员命名的对话框模板的模块的句柄。 如果未设置 CF_ENABLETEMPLATEHANDLECF_ENABLETEMPLATE ,则忽略此成员。

lpszStyle

类型: LPTSTR

样式数据。 如果指定 了CF_USESTYLE 标志, ChooseFont 将使用此缓冲区中的数据来初始化 “字体样式 ”组合框。 当用户关闭对话框时, ChooseFont 会将 “字体样式 ”组合框中的字符串复制到此缓冲区中。

nFontType

类型: WORD

ChooseFont 返回时所选字体的类型。 此成员可以是以下一个或多个值。

Value 含义
BOLD_FONTTYPE
0x0100
字体粗细为粗体。 此信息在 LOGFONT 结构的 lfWeight 成员中重复,等效于 FW_BOLD
ITALIC_FONTTYPE
0x0200
设置了斜体字体属性。 此信息在 LOGFONT 结构的 lfItalic 成员中重复。
PRINTER_FONTTYPE
0x4000
字体是打印机字体。
REGULAR_FONTTYPE
0x0400
字体粗细正常。 此信息在 LOGFONT 结构的 lfWeight 成员中重复,等效于 FW_REGULAR
SCREEN_FONTTYPE
0x2000
字体是屏幕字体。
SIMULATED_FONTTYPE
0x8000
该字体由图形设备界面 (GDI) 模拟。

___MISSING_ALIGNMENT__

nSizeMin

类型: INT

用户可选择的最小磅值。 仅当指定了 CF_LIMITSIZE 标志时,ChooseFont 才会识别此成员。

nSizeMax

类型: INT

用户可选择的最大磅值。 仅当指定了 CF_LIMITSIZE 标志时,ChooseFont 才会识别此成员。

注解

注意

commdlg.h 标头将 CHOOSEFONT 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 commdlg.h

另请参阅

ChooseFont

通用对话框库

概念性

MAKEINTRESOURCE

引用