CFont
CFont类封装了一个Windows图形设备接口(GDI)字体并提供管理字体的成员函数。为使用一个CFont对象,可构造一个CFont对象并用CreatFont,CreateFontIndirect,CreatePointFont或CreatePointFontIndirect将一个Windows字体附加给它,然后用对象的成员函数操纵字体。
CreatePointFont和CreatePointFontIndirect常比使用CreateFontIndirect更容易,因为它们自动将字体高度从点大小变为逻辑单位。要了解有关CFont的更多信息,请参阅“Visual C++ 程序员指南”中的“图形对象”。
#include <afxwin.h>
CFont类的成员
构造函数
初始化
操作
属性
CFont::CFont
CFont( );
说明:
构造一个CFont对象,在结果对象被使用之前必须先用CreateFont,CreateFontIndirect,CreatePointFont或CreatePointFontIndirect初始化。
CFont::CreateFont
BOOL CreateFont(
int nHeight,
int nWidth,
int nEscapenment,
intnOrientation,
int nWeight,
BYTE bItalic,
BYTE bUnderline,
BYTE cStrikeOut,
BYTE nCharset,
BYTE nOutPrecision,
BYTE nClipPrecision,
BYTE nQuality,
BYTE nPitchAndFamily,
LPCTSTR lpszFacename
);
返回值:如果成功,则返回非零值,否则为0。
参数:
说明:
用指定的特征初始化一个CFont对象。此字体可被选作任何设备上下文的字体。CreateFont函数不创建一个新Windows GDI字体,只是从GDI物理字体库选择最相近的匹配字体。当构造一个逻辑字体时,应用可以为这些参数的大部分使用缺省设置。参数经常应被给定的特定值是nHeight和lpszFaceName。如果应用没有给定nHeight和lpszFace Name,则逻辑字体是与设备有关的。当用CreateFont函数完成了一个CFont对象的创建时,先从设备上下文中选择字体,然后删除CFont对象。
CFont::CreateFontIndirect
BOOL CreateFontIndirect(const LOGFONT* lpLogFont);
返回值:如果成功,则返回非零值,否则为0。
参数:
说明:
用lpLogFont指向的LOGFONT结构定义的特征初始化一个CFont对象,之后此字体即可被任何设备选作当前字体。
此字体具有LOGFONT结构定义的特征。当使用CDC::SelectObject成员函数选择时,GDI字体映射器将努力将逻辑字体和已存在的物理字体相匹配。如果找不到匹配的逻辑字体,则尽可能找与之特性匹配最多的字体替代。
当你用CreateFontIndirect函数完成CFont对象的创建后,先在设备上下文中选择字体,然后删除CFont对象。
CFont::CreatePointFont
BOOL CreatePointFont(int nPointSize, LPCTSTR lpszFaceName, CDC* pDC = NULL);
返回值:如果成功,则返回非零值,否则为0。
参数:
说明:
此函数提供了一种创建指定字体和点大小的字体对象的方法,它自动将nPointSize中的高度转化为逻辑单位,这是使用由pDC指向的CDC对象实现的。
当完成用CreatePointFont函数创建CFont对象后,从设备上下文中选择字体,然后删除CFont对象。
CFont::CreatePointFontIndirect
BOOL CreatePointFontIndirect(const LOGFONT* lpLogFont, CDC* pDC = NULL);
返回值:如果成功,则返回非零值,否则为0。
参数:
说明:
此函数与CreateFontIndirect相似,但LOGFONT的lfHeight成员由0.1点表示而不是用设备单位表示。在传递LOGFONT结构到Windows之前,pDC指向的CDC对象自动使函数的lfHeight中的高度转化为逻辑单位。
当完成由CreatePointFontIndirect函数创建的CFont对象之后,先选择设备上下文字体,然后删去CFont对象。
CFont::FromHandle
static CFont* PASCAL FromHandle (HFONT hFont);
返回值:如果成功,则指向CFont对象的指针,否则为NULL。
参数:
当给定一个Windows GDI字体对象的HFONT句柄时,返回一个指向CFont对象的指针。如果CFont对象还未附加给句柄,一个临时CFont对象被创建并附加,此临时CFont对象仅在应用在事件循环中有空闲时才可用,此时临时图形对象被删除。另一种说法是临时对象仅在一个窗口消息进程中才可用。
CFont::GetLogFont
int GetLogFont(LOGFONT* pLogFont);
返回值:如果成功,则返回非零值,否则为0。
参数:
说明:调用此成员函数获取一个CFont的LOGFONT结构的拷贝。
CFont::operator HFONT
operator HFONT( )const;
返回值:
如果成功,则返回附加给CFont的Windows GDI字体对象句柄,否则为NULL。
说明:
用此操作获取附加给CFont的Windows GDI字体对象句柄。
由于操作自动将CFont转换为字体和文本,可以将CFont对象传递到除HFONT以外的函数。
CObject |
└CGdiObject |
└CFont |
CFont类封装了一个Windows图形设备接口(GDI)字体并提供管理字体的成员函数。为使用一个CFont对象,可构造一个CFont对象并用CreatFont,CreateFontIndirect,CreatePointFont或CreatePointFontIndirect将一个Windows字体附加给它,然后用对象的成员函数操纵字体。
CreatePointFont和CreatePointFontIndirect常比使用CreateFontIndirect更容易,因为它们自动将字体高度从点大小变为逻辑单位。要了解有关CFont的更多信息,请参阅“Visual C++ 程序员指南”中的“图形对象”。
#include <afxwin.h>
CFont类的成员
构造函数
CFont | 构造一个CFont对象 |
初始化
CreateFontIndirect | 初始化一个由LOGFONT结构给出其特征的CFont对象 |
CreateFont | 初始化用指定特性定义的CFont对象 |
CreatePointFont | 用指定高度(用0.1点)和字体初始化一个CFont对象 |
CreatePointFontIndirect | 与CreateFontIndirect相似,但字体高度用0.1点定义而不用逻辑单位定义 |
操作
FromHandle | 当给定一个Windows HFONT时,返回一个指向CFont对象的指针 |
属性
operator HFONT | 返回附加给CFont对象的Windows GDI字体句柄 |
GetLogFont | 用附加给CFont对象的逻辑字体信息填充一个LOGFONT |
CFont::CFont
CFont( );
说明:
构造一个CFont对象,在结果对象被使用之前必须先用CreateFont,CreateFontIndirect,CreatePointFont或CreatePointFontIndirect初始化。
CFont::CreateFont
BOOL CreateFont(
int nHeight,
int nWidth,
int nEscapenment,
intnOrientation,
int nWeight,
BYTE bItalic,
BYTE bUnderline,
BYTE cStrikeOut,
BYTE nCharset,
BYTE nOutPrecision,
BYTE nClipPrecision,
BYTE nQuality,
BYTE nPitchAndFamily,
LPCTSTR lpszFacename
);
返回值:如果成功,则返回非零值,否则为0。
参数:
nHeight | 以逻辑单位方式指定字体的高度,字体高度可为以下值之一:
| ||||||||||||||||||||||||||||||||
nWidth | 指定字体中字符平均宽度(用逻辑单位)。如果为0,设备方向比率与可用字体的数字方向比率相比较,找一个最近的匹配,它由值的差的绝对值决定。 | ||||||||||||||||||||||||||||||||
nEscapement | 指定偏离垂线与x轴在显示面上的夹角(用0.1度单位)。偏离垂线时从一行中开始一个字符到最后一个字符的线,此角从x轴逆时针方向度量。 | ||||||||||||||||||||||||||||||||
nOrientation | 指定字符基线和x轴之间的夹角(用0.1度单位)。此度数在座标轴中由x轴逆时针方向度量时坐标系中y轴向下,顺时针方向从x轴旋转时,y轴向上。 | ||||||||||||||||||||||||||||||||
nWeight | 指定字体磅数(用每1000点中墨点像素数计)。尽管nWeight可为0到1000中的任意整数值,常用值和常数如下:
| ||||||||||||||||||||||||||||||||
bItalic | 指定字体是否为斜体。 | ||||||||||||||||||||||||||||||||
bUnderline | 指定字体是否带下划线。 | ||||||||||||||||||||||||||||||||
bStrikeOut | 指定是否是字体字符突出。如果设置为非零,则突出。 | ||||||||||||||||||||||||||||||||
nCharSet | 指定字体的字符集,以下是预定义的常数和值:
具有其它字符集的字体可能存在于系统之中。一个使用未知字符集字体的应用不能翻译或解释一个以此字符集着色的字符串,相反,应将字符串直接输入到设备驱动。 字体映射器不使用DEFAULT_CHARSET值,一个应用可以使用此值让字体名和大小完全描述逻辑字体。如果指定的名字不存在,为避免不可预料的结果,应用应谨慎地使用 DEFAULT_CHARSET。 | ||||||||||||||||||||||||||||||||
nOutPrecision | 指定所需的输出精度。输出精度定义输出与需要的字体高度、宽度,字符方向、走格、间距之间的接近程度,可以为以下值之一:
| ||||||||||||||||||||||||||||||||
nClipPrecision | 指定所需的剪贴精度。剪贴精度定义了如何剪贴部分超过剪贴范围的字符,可为以下值之一:
| ||||||||||||||||||||||||||||||||
nQuality | 指示字体的输出质量,定义了GDI必须使逻辑字体特性和物理字体特性相匹配的程度。可为以下值之一:
| ||||||||||||||||||||||||||||||||
nPitchAndFamily | 指定字体的间距和家族。两个低位指定字体的间距,可为以下值之一: DEFAULT_PITCH、VARIABLE_PITCH、FIXED_PITCH 应用可以将T\MPF_TRUETYPE加到nPitchAndFamily参数中来选择一个TrueType字体。高四位指定字体家族,可为以下值之一:
字体家族用普通方式描述了字体的外观,它们在所需铅字体无效时用于定义指定的字体。 | ||||||||||||||||||||||||||||||||
lpszFacenameCString | 或指向一个以空终止字符串的指针,字符串指定字体字样的名字。此字符串的长度不能长于30个字符,WindowsEnumFontFamilies函数可用于枚举所有当前可用字体。如果为NULL,则GDI使用一个不依赖设备的字体。 |
说明:
用指定的特征初始化一个CFont对象。此字体可被选作任何设备上下文的字体。CreateFont函数不创建一个新Windows GDI字体,只是从GDI物理字体库选择最相近的匹配字体。当构造一个逻辑字体时,应用可以为这些参数的大部分使用缺省设置。参数经常应被给定的特定值是nHeight和lpszFaceName。如果应用没有给定nHeight和lpszFace Name,则逻辑字体是与设备有关的。当用CreateFont函数完成了一个CFont对象的创建时,先从设备上下文中选择字体,然后删除CFont对象。
CFont::CreateFontIndirect
BOOL CreateFontIndirect(const LOGFONT* lpLogFont);
返回值:如果成功,则返回非零值,否则为0。
参数:
lpLogFont | 指向一个定义逻辑字体的特征的LoGFont结构。 |
说明:
用lpLogFont指向的LOGFONT结构定义的特征初始化一个CFont对象,之后此字体即可被任何设备选作当前字体。
此字体具有LOGFONT结构定义的特征。当使用CDC::SelectObject成员函数选择时,GDI字体映射器将努力将逻辑字体和已存在的物理字体相匹配。如果找不到匹配的逻辑字体,则尽可能找与之特性匹配最多的字体替代。
当你用CreateFontIndirect函数完成CFont对象的创建后,先在设备上下文中选择字体,然后删除CFont对象。
CFont::CreatePointFont
BOOL CreatePointFont(int nPointSize, LPCTSTR lpszFaceName, CDC* pDC = NULL);
返回值:如果成功,则返回非零值,否则为0。
参数:
nPointSize | 所需字体高度(用0.1点表示,例如,传递120表示12点字体)。 |
lpszFaceName | 一个CString或指向一个以空终止符结尾的字符串,定义字体名称。此字符串长度不应超过30个字符。Windows EnumFontFamilies函数可用于计算当前可用字体的总数。如果为NULL,则GDI使用与设备无关的字体。 |
pDC | 指向CDC对象,将nPointSize中的高度转化为逻辑单位。如果为NULL,则屏幕设备上下文用于转换。 |
说明:
此函数提供了一种创建指定字体和点大小的字体对象的方法,它自动将nPointSize中的高度转化为逻辑单位,这是使用由pDC指向的CDC对象实现的。
当完成用CreatePointFont函数创建CFont对象后,从设备上下文中选择字体,然后删除CFont对象。
CFont::CreatePointFontIndirect
BOOL CreatePointFontIndirect(const LOGFONT* lpLogFont, CDC* pDC = NULL);
返回值:如果成功,则返回非零值,否则为0。
参数:
lpLogFont | 指向LOGFONT结构,定义逻辑字体特征。LOGFONT的lfHeight成员用0.1点计算而不用逻辑单位(如果设置lfHeight为120,则要求12点字体)。 |
pDC | 指向CDC对象,用于将lfHeight中的高度转化为逻辑单位。如果为NULL,屏幕设备上下文用于转换。 |
说明:
此函数与CreateFontIndirect相似,但LOGFONT的lfHeight成员由0.1点表示而不是用设备单位表示。在传递LOGFONT结构到Windows之前,pDC指向的CDC对象自动使函数的lfHeight中的高度转化为逻辑单位。
当完成由CreatePointFontIndirect函数创建的CFont对象之后,先选择设备上下文字体,然后删去CFont对象。
CFont::FromHandle
static CFont* PASCAL FromHandle (HFONT hFont);
返回值:如果成功,则指向CFont对象的指针,否则为NULL。
参数:
hFontWindows | 字体中的HFONT句柄。 |
CFont::GetLogFont
int GetLogFont(LOGFONT* pLogFont);
返回值:如果成功,则返回非零值,否则为0。
参数:
pLogFont | 指向LOGFONT结构以接收字体信息。 |
说明:调用此成员函数获取一个CFont的LOGFONT结构的拷贝。
CFont::operator HFONT
operator HFONT( )const;
返回值:
如果成功,则返回附加给CFont的Windows GDI字体对象句柄,否则为NULL。
说明:
用此操作获取附加给CFont的Windows GDI字体对象句柄。
由于操作自动将CFont转换为字体和文本,可以将CFont对象传递到除HFONT以外的函数。