- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章文本和字体﹝5﹞
第5章 文本与字体; 使用定义好的与设备无关的字体集, Windows就能维护它的设备无关性,提供“所见即所得”的好处,即屏幕所见与设备输出的文本是一样的。;;(1) 定义字体句柄变量:
HFONT hF; //hF为字体的句柄;;;;获取字体信息;系统定义的TEXTMETRICS的结构如下:
typedef struct tagTEXTMETRIC
{ //tm
LONG tmHeight; //字符高度
LONG tmAscent; //字符基线以上高度
LONG tmDescent; //字符基线以下高度
LONG tmInternalLeading; //tmHeight制订的字符高度顶部的控件
LONG tmExternalLeading; //行与行之间的间隔
LONG tmAveCharWidth; //平均字符宽度
LONG tmMaxCharWidth; //最大字符宽度
LONG tmWeight; //字符的粗细度
LONG tmOverhang; //合成字体间附加的宽度
LONG tmDigitizedAspectX; //为输出设备设计的X轴尺寸
LONG tmDigitizedAspectY; //为输出设备设计的Y轴尺寸
BCHAR tmFirstChar; //字体中第一个字符值
BCHAR tmLastChar; //字体中最后一个字符值
BCHAR tmDefaultChar; //代替不在字体中字符的字符
BCHAR tmBreakChar; //作为分割符的字符
BYTE tmItalic; //非0则表示字体为斜体
BYTE tmUnderlined; //非0则表示字体有下划线
BYTE tmStruckOut; //非0则表示字符为删除字体
BYTE tmPitchAndFamily; //字体间距和字体族
BYTE tmCharSet; //字符集
}TEXTMETRIC;格式化文本;(2)确定换行时文本坐标;文本输出;;//主函数
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG Message;
if(!InitWindowsClass(hInstance)) return FALSE;
if(!InitWindows(hInstance,nCmdShow))return FALSE;
while(GetMessage(Message,0,0,0))//消息循环
{
TranslateMessage(Message);
DispatchMessage(Message);
}
return Message.wParam;
};//消息处理函数
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
static long nXChar,nCaps,nYChar;
HDC hDC; //定义指向设备上下文的句柄
short x;
TEXTMETRIC tm;
short LnCount=6;
PAINTSTRUCT PtStr; //定义指向包含绘图信息的结构体变量
static char *textbuf[]=
{
This is the First line,
This is the second line,
This is the third line,
This is the fourth line,
This is the fifth line,
This is the sixth line
};;switch(iMessage) //处理消息
{case WM_CREATE: //处理窗口创建消息
hDC=GetDC(hWnd) ; //获取当前设备表句柄
GetTextMetrics(hDC,tm); //获取字体信息
nXChar=tm.tmAveCharWidth; //获取字符宽度
nYChar=tm.tmHeight+tm.tmExternalLeading;
nCaps=(tm.tmPitchAndFamily1?3:2)*nXChar/2;
ReleaseDC(hWnd,hDC); //释放当前设备句柄
retu
文档评论(0)