BOOL GetTextMetrics( HDC hdc, // 当前的设备描述表句柄 LPTEXTMETRIC lptm // 指向TEXTMETRICS结构对象的指针 ); GetTextMetrics函数利用当前选择字体的各种度量值来填充由lptm参数所指向的缓冲区,函数如果运行成功则返回TURE,失败则返回FALSE。 TEXTMETRIC结构定义在WinGdi.h头文件中。 结构如下: typedef struct tagTEXTMETRICA { LONG tmHeight; LONG tmAscent; LONG tmDescent; LONG tmInternalLeading; LONG tmExternalLeading; LONG tmAveCharWidth; LONG tmMaxCharWidth; LONG tmWeight; LONG tmOverhang; LONG tmDigitizedAspectX; LONG tmDigitizedAspectY; BYTE tmFirstChar; BYTE tmLastChar; BYTE tmDefaultChar; BYTE tmBreakChar; BYTE tmItalic; BYTE tmUnderlined; BYTE tmStruckOut; BYTE tmPitchAndFamily; BYTE tmCharSet; } TEXTMETRICA, *PTEXTMETRICA, NEAR *NPTEXTMETRICA, FAR *LPTEXTMETRICA; typedef struct tagTEXTMETRICW { LONG tmHeight; LONG tmAscent; LONG tmDescent; LONG tmInternalLeading; LONG tmExternalLeading; LONG tmAveCharWidth; LONG tmMaxCharWidth; LONG tmWeight; LONG tmOverhang; LONG tmDigitizedAspectX; LONG tmDigitizedAspectY; WCHAR tmFirstChar; WCHAR tmLastChar; WCHAR tmDefaultChar; WCHAR tmBreakChar; BYTE tmItalic; BYTE tmUnderlined; BYTE tmStruckOut; BYTE tmPitchAndFamily; BYTE tmCharSet; } TEXTMETRICW, *PTEXTMETRICW, NEAR *NPTEXTMETRICW, FAR *LPTEXTMETRICW; 该结构拥有大约20个属性,这些属性的值的单位取决于设备描述表的映射方式,默认情况下是MM_TEXT,对于TextOut输出来说我们只需要用到前7个,他们的单位是像素。 LONG tmHeight; // 字符基准线上下最大纵向高度,是tmAscent与tmDescent之和。 LONG tmAscent; // 字符基准线以上所占的高度。 LONG tmDescent; // 字符基准线以下所占的高度。 LONG tmInternalLeading; // 内部间距,也是重音符号出现的地方。 LONG tmExternalLeading; // 行距。 LONG tmAveCharWidth; // 小写字母的加权平均宽度,对于大写字母来说可以用小写字母的加权平均宽度乘以150%计算出来。 LONG tmMaxCharWidth; // 字符中字宽字符的宽度。 字符的纵向大小是由TEXTMETRIC结构的前五个属性决定的。 具体情况见下图: 字体的大小是取决于当前屏幕的分辨率或是所选字体本身的默认大小的,在编写应用程序的时候不要把字体的大小以猜想的方式固定了,因为字体的大小是可变化的,利用GetTextMetrics函数动态的获取它们才是正确的。 |
正在阅读:Windows API-GDI入门基础知识详解(2)Windows API-GDI入门基础知识详解(2)
2005-06-30 10:06
出处:PConline
责任编辑:xietaoming
键盘也能翻页,试试“← →”键