|
3.4.3 文本和字体
程序界面上不可避免的会出现和用户交互,以及向用户展示信息的文本。另外字体选择也是界面设计的必经环节。为了满足不同地区和不同用户的习惯和审美需求,文本和字体涉及的编程(www.cppentry.com)非常烦琐复杂,所以在本节主要讨论如何选入字体,输出相关文本以及创建特定的字体。
选入字体的操作和选定新画笔或画刷的过程一样。比如在表3-7中的SYSTEM_FIXED_ FONT表示等宽字体。等宽字体表示具有相同的宽度。同比例字体具有不同的间距。现在要选定等宽字体进入图形描述表,应当:
SelectObject(hdc, GetStockObject(SYSTEM_FIXED_FONT)); | 选入特定的字体后,就可以输出文本了。DrawText()和TextOut()是常用的用来输出字体的函数。其中用DrawText()函数可以格式化输出文本,TextOut()函数则没有这项功能,但TextOut()函数对文本进行精确定位比较方便。它们的函数原型如下:
int DrawText( HDC hDC, //设备句柄 LPCTSTR lpString, //文本的指针 int nCount, //文本字符串的长度 LPRECT lpRect, //文本显示的范围矩阵 dimensions UINT uFormat //文本的格式描述 ); BOOL TextOut( HDC hdc, //设备句柄 int nXStart, //文本的x坐标 int nYStart, //文本的y坐标 LPCTSTR lpString, //文本字符串的指针 int cbString //字符串的长度 );
|
文本的输出可以使用系统预定义的字体,如表3-7所示的字体,程序员也可以创建特定的字体。创建字体可以使用Windows API函数CreateFont()。该函数的功能是函数功能:创建一种特殊的逻辑字体,此逻辑字体可以在后面被任何设备选择。 函数原型如下:
HFONT CreateFont( int nHeight, int nWidth, //字体的逻辑高度好和逻辑平均宽度 int nEscapement, //指定移位向量和设备X轴之间的一个角度,以十分之一度为单位 int nOrientation, //指定每个字符的基线和设备X轴之间的角度 int fnWeight, //在0到1000之间指定字体的权值 DWORD fdwltalic, //如果设置为TRUE则指定斜体 DWORD fdwUnderline, //如果设置为TRUE,则指定加下画线的字体 DWORD fdwStrikeOut, //如果设置为TRUE,则strikeout指定字体 DWORD fdwCharSet, //指定字符集 DWORD fdwOutputPrecision,//指定输出精度 DWORD fdwClipPrecision, //指定裁剪精度 DWORD fdwQuality, //指向输出质量 DWORD fdwPitchAndFamily, //指定字体间距和字体族 LPCTSTR lpszFace //指向指定字体的字样名的 );
|
由于该函数非常的复杂,同时也不常用,所以这里不做进一步地说明。程序员在使用时可以参考MSDN。
【责任编辑: 杜书 TEL:(010)68476606】
|