第5章文本与字体ppt课件

上传人:cl****1 文档编号:567963031 上传时间:2024-07-22 格式:PPT 页数:37 大小:231.50KB
返回 下载 相关 举报
第5章文本与字体ppt课件_第1页
第1页 / 共37页
第5章文本与字体ppt课件_第2页
第2页 / 共37页
第5章文本与字体ppt课件_第3页
第3页 / 共37页
第5章文本与字体ppt课件_第4页
第4页 / 共37页
第5章文本与字体ppt课件_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《第5章文本与字体ppt课件》由会员分享,可在线阅读,更多相关《第5章文本与字体ppt课件(37页珍藏版)》请在金锄头文库上搜索。

1、第第5 5章章 文本与字体文本与字体垫弱乔陛健半守缩锣吏文勒韧苏匣僳迪潦受韶陶货工屹略翻撰卒溅滑屯薛第5章文本与字体ppt课件第5章文本与字体ppt课件1 使用定义好的与设备无关的使用定义好的与设备无关的字体字体集,集, Windows就能维就能维护它的设备无关性,提供护它的设备无关性,提供“所见即所得所见即所得”的好处,即屏幕的好处,即屏幕所见与设备输出的文本是一样的。所见与设备输出的文本是一样的。 Windows经常使用经常使用GDI进行文本输出。在进行文本输出。在一定意义上,任何内容一定意义上,任何内容都可以看成都可以看成图形实体图形实体文本文本操作操作先要获得文本句柄先要获得文本句柄设

2、置字体、字符大小、字符颜色等有关属性设置字体、字符大小、字符颜色等有关属性将这些属性选入设备环境将这些属性选入设备环境邓领阀柒和医绿墟架疯遥巍足跨集讹乙闰褪彭偿渠朔吏奢媒力弄巳猩隧揩第5章文本与字体ppt课件第5章文本与字体ppt课件2字体字体逻辑字体逻辑字体定义的字符集是定义的字符集是设备无关设备无关的,它可以精确标度,因的,它可以精确标度,因此得到广泛应用此得到广泛应用描述所要显示描述所要显示的文本的大小、的文本的大小、类型和外形类型和外形物理字体物理字体是为特殊设备设计的,因而是是为特殊设备设计的,因而是设备相关设备相关的的Win Win 系统系统系统系统提供了七种提供了七种提供了七种提

3、供了七种基本字体基本字体基本字体基本字体字体字体 说明说明ANSI_FIXED ANSI标准的标准的固定固定宽度的字体宽度的字体ANSI_VAR ANSI标准的标准的可变可变宽度的字体宽度的字体DEFAULT_GUI当前当前GUI的默认字体的默认字体OEM_FIXED 由标准原设备制造商由标准原设备制造商(OEM)提供提供DEVICE_DEFAULT当前图形设备的字体当前图形设备的字体SYSTEM_FIXEDWindows的标准的标准固定固定宽度的字体宽度的字体SYSTEM Windows提供的提供的可变可变宽度的字体宽度的字体常作为默认字体常作为默认字体常作为默认字体常作为默认字体 WinW

4、inWinWin用它作为用它作为用它作为用它作为系统界面字体系统界面字体系统界面字体系统界面字体5.1 设置文本的设备环境设置文本的设备环境 5.1.1 字体句柄字体句柄侥砂捣癸膘冻逞阶权掣吃桑尼促窖腋潭岂酷露悸巢贞薯豌霓控珠哇仕弟靡第5章文本与字体ppt课件第5章文本与字体ppt课件3(1) (1) 定义字体句柄变量:定义字体句柄变量: HFONT hF; /hF HFONT hF; /hF为字体的句柄为字体的句柄(2) (2) 调函数调函数GetStockObjectGetStockObject获得系统字体句柄获得系统字体句柄 它返回的是系统的默认字体它返回的是系统的默认字体 hF= Ge

5、tStockObject( ) hF= GetStockObject( ):(3) (3) 调用函数调用函数SelectObjectSelectObject将字体选入设备环将字体选入设备环境境 SelectObject(hdc,hF) SelectObject(hdc,hF);选选择择系系统统字字体体的的步步骤骤征抿胀拂闰斟率冲凹逸按耀弘磋雹翅艺梗混夜淖毖史冀坯溜勿逆材券旧淤第5章文本与字体ppt课件第5章文本与字体ppt课件4 若需要定义系统以外的字体,可以调用函数若需要定义系统以外的字体,可以调用函数GreateFont自行创建自行创建 HFont=CreateFont HFont=Cre

6、ateFont ( (int nHeight, int nHeight, /字体高度,字体高度,0 0采用系统默认值,使用逻辑单位采用系统默认值,使用逻辑单位 int nWidth, int nWidth, /字体宽度,取字体宽度,取0 0则由系统根据高宽比取最佳值则由系统根据高宽比取最佳值 int nEscapement, int nEscapement, /每每行行文字相对于页底的角度,单位为文字相对于页底的角度,单位为0.10.1度度 int nOrienation, int nOrienation, /每每个个文字相对于页底的角度,单位为文字相对于页底的角度,单位为0.10.1度度 D

7、WORD nWeight, DWORD nWeight, /字体粗细度,范围为字体粗细度,范围为0 010001000 DWORD Dwltalic, DWORD Dwltalic, /如果要求字体倾斜,则取非零如果要求字体倾斜,则取非零 DWORD dwUnderline, DWORD dwUnderline, /如果要求下划线,则取非零如果要求下划线,则取非零 DWORD dwStrikeout, DWORD dwStrikeout, /如果要求中划线,则取非零如果要求中划线,则取非零 DWORD dwCharset, DWORD dwCharset, /字体所属字符集字体所属字符集 DW

8、ORD dwOutputPrecision,/ DWORD dwOutputPrecision,/输出精度,一般取默认值输出精度,一般取默认值OUT_DEFAULT_PRECISOUT_DEFAULT_PRECIS DWORD dwClipPrecision, / DWORD dwClipPrecision, /剪裁精度,常取默认值剪裁精度,常取默认值CLIP_DEFAULT_PRECISCLIP_DEFAULT_PRECIS DWORD dwQuality, DWORD dwQuality, /输出质量,一般取默认值输出质量,一般取默认值DEFAULT_QUALITYDEFAULT_QUAL

9、ITY DWORD dwPitchAndFamily, / DWORD dwPitchAndFamily, /字体名字体名) ) 可选的系统字符集:可选的系统字符集:ANSI_CHARSETANSI_CHARSETOEM_CHARSETOEM_CHARSETSYMBOL_CHARSETSYMBOL_CHARSETDEFAULT_CHARSETDEFAULT_CHARSETSHIFTJIS_CHARSETSHIFTJIS_CHARSET5.1.2 创建自定义字体创建自定义字体胃姻甫恋临瓷堵垄渺斧枪预毙主枫渊耸颓科次么蜡台氢载苏戈靶筋意逞变第5章文本与字体ppt课件第5章文本与字体ppt课件5设置

10、字体颜色:设置字体颜色:SetTextColor(hdc,crColor)SetTextColor(hdc,crColor);设置背景颜色设置背景颜色:SetBkColor(hdc,crColor)SetBkColor(hdc,crColor);crColorcrColor为设置的颜色为设置的颜色字体字体字体字体及及背景颜色背景颜色背景颜色背景颜色的设置在开发过的设置在开发过的设置在开发过的设置在开发过程中非常重要程中非常重要程中非常重要程中非常重要5.1.3 设置字体和背景颜色设置字体和背景颜色衰湾去扫体赡诣见栈柏绷姻栏痴牌利夺锣金瞅仲椅递芍孽戊氖寺凤济吱偶第5章文本与字体ppt课件第5章文

11、本与字体ppt课件6确定后续文本坐标确定后续文本坐标确定换行时文本坐标确定换行时文本坐标文本输文本输出过程出过程获取字体信息获取字体信息格式化文本格式化文本调用函数输出文本调用函数输出文本5.2 文本的输出过程文本的输出过程竭副架扫樊缮媚伍妊陛少伶转孟配芋舱锻撂候衡饶瞎异秤翁濒叔竿烦诞盼第5章文本与字体ppt课件第5章文本与字体ppt课件7获取字体信息获取字体信息输出文本之前要获取字体的信息,如字符高度输出文本之前要获取字体的信息,如字符高度等,以确定输出格式和下一行字符的位置等,以确定输出格式和下一行字符的位置 GetTextMetrics (hdc,&tm)GetTextMetrics (

12、hdc,&tm);/tmtm为为TEXTMETRICSTEXTMETRICS结构结构获取当前使获取当前使用字体信息用字体信息调用该函数时,系统将当前调用该函数时,系统将当前字体的信息拷贝到字体的信息拷贝到tm标识标识的的TEXTMETRICSTEXTMETRICS结构中结构中鸿绝富江罕岿拽斟光馈稚巡由狐沪瞳冬搐赠请杠格缅童潘炙陀蓬员彪甭页第5章文本与字体ppt课件第5章文本与字体ppt课件8系统定义的系统定义的TEXTMETRICS的结构如下:的结构如下:typedef struct tagTEXTMETRIC typedef struct tagTEXTMETRIC /tm/tmLONG t

13、mHeight; LONG tmHeight; /字符高度字符高度LONG tmAscent;LONG tmAscent; /字符基线以上高度字符基线以上高度LONG tmDescent; LONG tmDescent; /字符基线以下高度字符基线以下高度LONG tmInternalLeading;LONG tmInternalLeading;/tmHeight/tmHeight制订的字符高度顶部的控件制订的字符高度顶部的控件LONG tmExternalLeading;LONG tmExternalLeading;/行与行之间的间隔行与行之间的间隔LONG tmAveCharWidth;L

14、ONG tmAveCharWidth;/平均字符宽度平均字符宽度LONG tmMaxCharWidth;LONG tmMaxCharWidth;/最大字符宽度最大字符宽度LONG tmWeight; LONG tmWeight; /字符的粗细度字符的粗细度LONG tmOverhang;LONG tmOverhang;/合成字体间附加的宽度合成字体间附加的宽度LONG tmDigitizedAspectX; LONG tmDigitizedAspectX; /为输出设备设计的为输出设备设计的X X轴尺寸轴尺寸LONG tmDigitizedAspectY; LONG tmDigitizedAs

15、pectY; /为输出设备设计的为输出设备设计的Y Y轴尺寸轴尺寸BCHAR tmFirstChar;BCHAR tmFirstChar;/字体中第一个字符值字体中第一个字符值BCHAR tmLastChar; BCHAR tmLastChar; /字体中最后一个字符值字体中最后一个字符值BCHAR tmDefaultChar; BCHAR tmDefaultChar; /代替不在字体中字符的字符代替不在字体中字符的字符BCHAR tmBreakChar;BCHAR tmBreakChar;/作为分割符的字符作为分割符的字符BYTE tmItalic; BYTE tmItalic; /非非0

16、0则表示字体为斜体则表示字体为斜体BYTE tmUnderlined; BYTE tmUnderlined; /非非0 0则表示字体有下划线则表示字体有下划线BYTE tmStruckOut; BYTE tmStruckOut; /非非0 0则表示字符为删除字体则表示字符为删除字体BYTE tmPitchAndFamily; BYTE tmPitchAndFamily; /字体间距和字体族字体间距和字体族BYTE tmCharSet; BYTE tmCharSet; /字符集字符集TEXTMETRICTEXTMETRIC梁向瞩屑蹿峡羹吮霜令郴扣羌村噪勿稀蓝阵杠舌浆痛洒民带裕窗盈恨溪烤第5章文本

17、与字体ppt课件第5章文本与字体ppt课件9格式化文本格式化文本(1) 确定后续文本坐标确定后续文本坐标换行时确定下一行文本的坐标换行时确定下一行文本的坐标需要格式化需要格式化处理的情况处理的情况在文本行中确定后续文本的坐标在文本行中确定后续文本的坐标确定后续文本的坐标确定后续文本的坐标,应先获取当前的字符串的宽度应先获取当前的字符串的宽度, 该工作由该工作由GetTextExtentPoint32函数函数完成,并把它存储于一个完成,并把它存储于一个SIZE结构结构中。中。BooL GetTextExtentPoint32BooL GetTextExtentPoint32( ( HDC hdc

18、,HDC hdc, LPCTSTR lpszStringLPCTSTR lpszString,/,/指定的字符串指定的字符串 int nLength, int nLength, /字符串中的字符数字符串中的字符数 LPSIZE lpSizeLPSIZE lpSize/返回字符串宽度及高度的返回字符串宽度及高度的SIZESIZE数据结构数据结构的地址的地址) )SIZE数据结构数据结构的定义的定义typedef struct tagSIZE LONG cx; LONG cy; SIZE;例如,例如,X轴起始坐标为轴起始坐标为cx0,后续文本起始坐标,后续文本起始坐标cx1为:为: cx1=cx0

19、+size.cx;漾糯撬鬼屿啡展优顺功损甄苑疥仍矣唬魂势饯山鲍砚管后肿铱绳办剂词嘎第5章文本与字体ppt课件第5章文本与字体ppt课件10(2)(2)确定换行时文本坐标确定换行时文本坐标字符的高度字符的高度与与行间隔行间隔均存储在均存储在tm指向的指向的TEXTMETRICS结结构中,换行时构中,换行时Y轴上文本的起始坐标轴上文本的起始坐标cy为:为: cy=tm.tmHeight+tm.tmExternalLeading; 通过计算当前行文本通过计算当前行文本字符的高度字符的高度与与行间隔行间隔之和,即可之和,即可得到换行时文本的起始坐标得到换行时文本的起始坐标洲傣砖图页滥许源般腻呛墅炕务除

20、圆赤侗凭杀掂踢愿反营角瘴梧桩你紧阁第5章文本与字体ppt课件第5章文本与字体ppt课件11文本输出文本输出 常用的文本输出函数常用的文本输出函数TextOut原型如下:原型如下:BOOL TextOutBOOL TextOut( ( HDC hdc, HDC hdc, int X, int Y,int X, int Y, /X, Y /X, Y为用户区中字符串的起始坐标为用户区中字符串的起始坐标 LPCTSTR lpstring, /lpstringLPCTSTR lpstring, /lpstring为显示的字符串为显示的字符串 int nCountint nCount /nCount /n

21、Count为字符串中的字节数为字符串中的字节数) );TextOutTextOut 以坐标以坐标以坐标以坐标X,YX,Y为起点,为起点,为起点,为起点,输出字节数为输出字节数为输出字节数为输出字节数为 nCount nCount、名为名为名为名为lpstringlpstring中的字符串中的字符串中的字符串中的字符串欢划叔赦怖泅啤伯痴铸市黑晕非嚣迅嘛苦证暖萝截域待撑乳源归粥贡哦袁第5章文本与字体ppt课件第5章文本与字体ppt课件12【例【例5-1】在用户窗口上输出几行字符串,当窗口接收到】在用户窗口上输出几行字符串,当窗口接收到WM_PAINT消息后,显示的文本每次都被重新刷新。消息后,显示

22、的文本每次都被重新刷新。#include#include#include#include#include#includelong WINAPI WndProc(long WINAPI WndProc(HWND hWnd,HWND hWnd,UINT iMessage,UINT iMessage,UINT wParam,UINT wParam,LONG lParamLONG lParam););BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindows

23、(HINSTANCE hInstance,int nCmdShow);BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);HWND hWndMain;HWND hWndMain;5.3 文本操作实例文本操作实例睦伶扰乏绊泞多踏镜记涧焦熔碳厦榷痰痴聊锯冈酮舜燃执锌孕仙庄谍唆恨第5章文本与字体ppt课件第5章文本与字体ppt课件13/主函数主函数int WINAPI WinMain(int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hInstance,HINSTANCE hPrevInstance,H

24、INSTANCE hPrevInstance,LPSTR lpCmdLine,LPSTR lpCmdLine,int nCmdShowint nCmdShow) ) MSG Message;MSG Message;if(!InitWindowsClass(hInstance)if(!InitWindowsClass(hInstance)return FALSE;return FALSE;if(!InitWindows(hInstance,nCmdShow)return FALSE;if(!InitWindows(hInstance,nCmdShow)return FALSE;while(Get

25、Message(&Message,0,0,0)/while(GetMessage(&Message,0,0,0)/消息循环消息循环 TranslateMessage(&Message);TranslateMessage(&Message);DispatchMessage(&Message);DispatchMessage(&Message); return Message.wParam;return Message.wParam; 方基前叁掩逢级瞧捌截萍嫉赁坪鼓翱哗阅赃屉软录饥磋擎只胚歹专镍抢翁第5章文本与字体ppt课件第5章文本与字体ppt课件14/消息处理函数消息处理函数long WINA

26、PI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam) static long nXChar,nCaps,nYChar;static long nXChar,nCaps,nYChar;HDC hDC; /HDC hDC; /定义指向设备上下文的句柄定义指向设备上下文的句柄short x;short x; TEXTMETRIC tm;TEXTMETRIC tm;short LnCount=6;sho

27、rt LnCount=6;PAINTSTRUCT PtStr; PAINTSTRUCT PtStr; /定义指向包含绘图信息的结构体变量定义指向包含绘图信息的结构体变量static char *textbuf=static char *textbuf= This is the First line,This is the First line,This is the second line,This is the second line,This is the third line,This is the third line,This is the fourth line,This is t

28、he fourth line,This is the fifth line,This is the fifth line,This is the sixth lineThis is the sixth line;输出的文输出的文输出的文输出的文本内容本内容本内容本内容闰枚汲寐嗽足校匀澎诵厘羡住款店泛病耸聂僚官渠事雏藩筷史搀瞅咕羞个第5章文本与字体ppt课件第5章文本与字体ppt课件15switch(iMessage) /switch(iMessage) /处理消息处理消息 case WM_CREATE:case WM_CREATE:/处理窗口创建消息处理窗口创建消息hDC=GetDC(hWnd

29、) ; hDC=GetDC(hWnd) ; /获取当前设备表句柄获取当前设备表句柄 GetTextMetrics(hDC,&tm); GetTextMetrics(hDC,&tm); /获取字体信息获取字体信息 nXChar=tm.tmAveCharWidth; nXChar=tm.tmAveCharWidth; /获取字符宽度获取字符宽度 nYChar=tm.tmHeight+tm.tmExternalLeading;nYChar=tm.tmHeight+tm.tmExternalLeading; nCaps=(tm.tmPitchAndFamily&1?3:2)*nXChar/2;nCap

30、s=(tm.tmPitchAndFamily&1?3:2)*nXChar/2; ReleaseDC(hWnd,hDC); ReleaseDC(hWnd,hDC); /释放当前设备句柄释放当前设备句柄 return 0;return 0; case WM_PAINT: case WM_PAINT: /处理重画消息处理重画消息 hDC=BeginPaint(hWnd,&PtStr); hDC=BeginPaint(hWnd,&PtStr); /开始绘画开始绘画 for(x=0;xLnCount;x=x+1) for(x=0;xLnCount;x=x+1) /输出文本输出文本 TextOut(hDC

31、,nXChar,nYChar*(1+x),textbufx,lstrlen(textbufx); TextOut(hDC,nXChar,nYChar*(1+x),textbufx,lstrlen(textbufx); EndPaint(hWnd,&PtStr);EndPaint(hWnd,&PtStr); return 0;return 0; case WM_DESTROY: case WM_DESTROY: /结束应用程序结束应用程序 PostQuitMessage(0);PostQuitMessage(0); return 0;return 0; default: default:/其他消

32、息处理程序其他消息处理程序 return(DefWindowProc(hWnd,iMessage,wParam,lParam) ; return(DefWindowProc(hWnd,iMessage,wParam,lParam) ; 惧隧教愚炯喉店周帐圣壳阮猪竭涩亲酷声斯茹稿烂锥途在棵隘涅打乙炊案第5章文本与字体ppt课件第5章文本与字体ppt课件16BOOL InitWindowsClass(HINSTANCE hInstance)BOOL InitWindowsClass(HINSTANCE hInstance)/初始化窗口类初始化窗口类 WNDCLASS WndClass;WNDCLA

33、SS WndClass;WndClass.style=CS_HREDRAW|CS_VREDRAW;WndClass.style=CS_HREDRAW|CS_VREDRAW;return RegisterClass(&WndClass);return RegisterClass(&WndClass); BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)BOOL InitWindows(HINSTANCE hInstance,int nCmdShow) / /初始化窗口初始化窗口 HWND hWnd;HWND hWnd;hWnd=CreateWin

34、dow(WinText, /hWnd=CreateWindow(WinText, /生成窗口生成窗口 文本显示示例程序文本显示示例程序,WS_OVERLAPPEDWINDOW,WS_OVERLAPPEDWINDOW,.;.;NULL);NULL);if(!hWnd)if(!hWnd)return FALSE;return FALSE;hWndMain=hWnd;hWndMain=hWnd;ShowWindow(hWnd,nCmdShow);ShowWindow(hWnd,nCmdShow);/显示窗口显示窗口UpdateWindow(hWnd);UpdateWindow(hWnd);retur

35、n TRUE;return TRUE; 锑朗怠粥轩堰锥唁玻亭偷品枫秧开屈贪式呀扶抒脓拣镇爱漏命奈幢喝翻讳第5章文本与字体ppt课件第5章文本与字体ppt课件17【例【例5-25-2】本程序通过在窗口中分五行分别显示五行文】本程序通过在窗口中分五行分别显示五行文本,以说明在窗口的用户区中输出文本的方法。本,以说明在窗口的用户区中输出文本的方法。掘诊窃予扬浚市樟嘻细上苗时忿遍鸵溜淌营煌恒狠俏匈棍傻饯绸砍非痉抬第5章文本与字体ppt课件第5章文本与字体ppt课件18本例题的源代码如下:#include #include #include #include #include #include #inc

36、lude #include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hInstance, HINSTANCE hPrevInst,HINSTANCE hPrevInst,LPSTR lpszCmdLine,LPSTR lpszCmdLine,int nCmdShowint nCmdShow) ) HWN

37、D hwnd;HWND hwnd; MSG Msg;MSG Msg; WNDCLASS wndclass;WNDCLASS wndclass; char lpszClassName = char lpszClassName = 文本输出文本输出; ; char lpszTitle= EXAMPLE FOR THE TEXT OUTPUT;char lpszTitle= EXAMPLE FOR THE TEXT OUTPUT; wndclass.style = 0;wndclass.style = 0; ; ; wndclass.lpszClassName = lpszClassName;wnd

38、class.lpszClassName = lpszClassName;瘩瑞衔拎司左桂当矩拉囱菲务测泽耽妆沛欲需曼牛悲纫并辫炎召舜厨羚戊第5章文本与字体ppt课件第5章文本与字体ppt课件19if( !RegisterClass( &wndclass)if( !RegisterClass( &wndclass) MessageBeep(0);return FALSE; MessageBeep(0);return FALSE; hwnd = CreateWindowhwnd = CreateWindow( ( lpszClassName,lpszClassName,lpszTitle,lpszT

39、itle,WS_OVERLAPPEDWINDOW,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL, NULL,NULL, hInstance,hInstance,NULLNULL););ShowWindow( hwnd, nCmdShow);ShowWindow( hwnd, nCmdShow);UpdateWindow(hwnd);UpdateWindow(h

40、wnd);while( GetMessage(&Msg,NULL,0,0)while( GetMessage(&Msg,NULL,0,0) TranslateMessage(&Msg);TranslateMessage(&Msg); DispatchMessage(&Msg);DispatchMessage(&Msg); return Msg.wParam;return Msg.wParam; 伏咋计磺陷石织举挂肾衙啡郭侧郁藉告学刚篙疼妆噪纫椅缩答诸闲心桔鹏第5章文本与字体ppt课件第5章文本与字体ppt课件20LRESULT CALLBACK WndProc(HWND hwnd,UINT m

41、essage,LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)WPARAM wParam,LPARAM lParam) HDC hdc;HDC hdc;HFONT hF_black,hF_big;HFONT hF_black,hF_big;/定义两种字体句柄定义两种字体句柄PAINTSTRUCT ps;PAINTSTRUCT ps;TEXTMETRIC tm;TEXTMETRIC tm;/定义一个定义一个TEXTMETRICTEXTMETRIC结构,用以记录字体信息结构,用以记录字体信息ch

42、ar lpsz_1=char lpsz_1=这是一行红色的、字体为这是一行红色的、字体为SYSTEM_FONTSYSTEM_FONT的文字,红色代表未来。的文字,红色代表未来。;char lpsz_2=char lpsz_2=现在显示的是自定义字体,颜色为绿色,绿色代表生机勃勃。现在显示的是自定义字体,颜色为绿色,绿色代表生机勃勃。;char lpsz_3=char lpsz_3=现在展现在您面前的是蓝色的粗体字,蓝色代表广阔的海洋和天空。现在展现在您面前的是蓝色的粗体字,蓝色代表广阔的海洋和天空。;char lpsz_4=char lpsz_4=当前字体为大号、斜体并带有下划线的文字。当前字

43、体为大号、斜体并带有下划线的文字。;char lpsz_5=char lpsz_5=现在您掌握了字体的操作了吗现在您掌握了字体的操作了吗?;?;char lpsz_6=char lpsz_6=祝您成功祝您成功!;!;int X=0,Y=0;int X=0,Y=0;SIZE size;SIZE size;/定义一个定义一个SIZESIZE类型的结构类型的结构鉴斩蓟酷件返傀氖加信干饶息汇宛吉畅引遗钢逮谦舒岭澳搽袭梭颊陆班胀第5章文本与字体ppt课件第5章文本与字体ppt课件21switch(message)switch(message) case WM_PAINT:case WM_PAINT:hd

44、c=BeginPaint(hwnd,&ps);hdc=BeginPaint(hwnd,&ps);SetTextColor(hdc,RGB(255,0,0);SetTextColor(hdc,RGB(255,0,0);/设置文本颜色为红色设置文本颜色为红色GetTextMetrics(hdc,&tm); /GetTextMetrics(hdc,&tm); /获取默认字体,写入获取默认字体,写入tmtm结构中结构中TextOut(hdc,X,Y,lpsz_1,strlen(lpsz_1);/TextOut(hdc,X,Y,lpsz_1,strlen(lpsz_1);/用当前字体输出文本用当前字体输

45、出文本Y=Y+tm.tmHeight+100*tm.tmExternalLeading;Y=Y+tm.tmHeight+100*tm.tmExternalLeading;/计算换行时下一行文本的输出坐标计算换行时下一行文本的输出坐标hF_blackhF_black= =CreateFontCreateFont( ( /创建自定义字体创建自定义字体 20,20,/字体的高度字体的高度 0, 0,/由系统根据高宽比选取字体最佳宽度值由系统根据高宽比选取字体最佳宽度值 0, 0,/文本的倾斜度为文本的倾斜度为0 0,表示水平,表示水平 0, 0,/字体的倾斜度为字体的倾斜度为0 0 FW_HEAVY

46、, FW_HEAVY,/字体的粗度,字体的粗度,FW_HEAVYFW_HEAVY为最粗为最粗 0, 0,/非斜体字非斜体字 0, 0,/无下划线无下划线 0, 0,/无删除线无删除线 ANSI_CHARSET, ANSI_CHARSET,/表示所用的字符集为表示所用的字符集为ANSI_CHARSETANSI_CHARSET OUT_DEFAULT_PRECIS, OUT_DEFAULT_PRECIS,/输出精度为默认精度输出精度为默认精度 CLIP_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,/剪裁精度为默认精度剪裁精度为默认精度 DEFAULT_QUALITY,

47、DEFAULT_QUALITY,/输出质量为默认值输出质量为默认值 DEFAULT_PITCH|FF_DONTCARE,/ DEFAULT_PITCH|FF_DONTCARE,/字间距和字体系列使用默认值字间距和字体系列使用默认值 粗体字粗体字 );); /字体名称字体名称栓醇笛区焦淮已踏莆堂涎贱例私睁粕鲍乐犬氏犀掠彝膘亚脱肿吮习赢押灼第5章文本与字体ppt课件第5章文本与字体ppt课件22SetTextColor(hdc,RGB(0,255,0);SetTextColor(hdc,RGB(0,255,0);/设置文本颜色为绿色设置文本颜色为绿色SelectObject(hdc,hF_blac

48、k);SelectObject(hdc,hF_black);/将自定义字体选入设备环境将自定义字体选入设备环境GetTextMetrics(hdc,&tm); /GetTextMetrics(hdc,&tm); /获取字体的信息,写入获取字体的信息,写入tmtm结构中结构中TextOut(hdc,X,Y,lpsz_2,strlen(lpsz_2);/TextOut(hdc,X,Y,lpsz_2,strlen(lpsz_2);/用当前字体输出文本用当前字体输出文本/换行继续输出文本,计算新行的起始换行继续输出文本,计算新行的起始Y Y坐标位置坐标位置Y=Y+tm.tmHeight+10*tm.t

49、mExternalLeading;Y=Y+tm.tmHeight+10*tm.tmExternalLeading;GetTextExtentPoint32(hdc,lpsz_2,strlen(lpsz_2),&size);GetTextExtentPoint32(hdc,lpsz_2,strlen(lpsz_2),&size);/获取字符串获取字符串/ /的宽度的宽度SetTextColor(hdc,RGB(0,0,255);SetTextColor(hdc,RGB(0,0,255);/设置文本颜色为蓝色设置文本颜色为蓝色TextOut(hdc,X,Y,lpsz_3,strlen(lpsz_3

50、);/TextOut(hdc,X,Y,lpsz_3,strlen(lpsz_3);/当前字体输出文本当前字体输出文本X=0;X=0;/计算下一行文本的输出起始坐标计算下一行文本的输出起始坐标Y=Y+tm.tmHeight+20*tm.tmExternalLeading; Y=Y+tm.tmHeight+20*tm.tmExternalLeading; 甜舵钞郎汛七遍厨煮乱筏绿粮纤貉室单选技题谆髓阿础锄符刑惯库拣禁督第5章文本与字体ppt课件第5章文本与字体ppt课件23hF_big=CreateFonthF_big=CreateFont/引入新字体引入新字体( (30,30,/字体高度字体高度

51、0,0,0,0,0,0,FW_NORMAL,FW_NORMAL,1,1,/定义斜体定义斜体1,1,/定义输出时带下划线定义输出时带下划线0,0,ANSI_CHARSET,ANSI_CHARSET,/所使用的字符集所使用的字符集OUT_DEFAULT_PRECIS,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,DEFAULT_PITCH|FF_DONTCARE, 大号字大号字 ););钮拧炸冗惰鹏姐寥措拷姐踢邪

52、邵醉荆蹬更矛猖窖膝樟监刽淘邱逐今烽漫司第5章文本与字体ppt课件第5章文本与字体ppt课件24SelectObject(hdc,hF_big);/SelectObject(hdc,hF_big);/将自定义字体选入设备环境将自定义字体选入设备环境SetTextColor(hdc,RGB(155,155,155);SetTextColor(hdc,RGB(155,155,155); /设置文本颜色设置文本颜色Y=Y+tm.tmHeight+20*tm.tmExternalLeading;Y=Y+tm.tmHeight+20*tm.tmExternalLeading;TextOut(hdc,X,Y

53、,lpsz_4,strlen(lpsz_4);/TextOut(hdc,X,Y,lpsz_4,strlen(lpsz_4);/输出文本输出文本SetTextColor(hdc,RGB(255,0,0);/SetTextColor(hdc,RGB(255,0,0);/设置文本颜色为红色设置文本颜色为红色X=0;X=0;/设定输出文本的设定输出文本的X X坐标位置坐标位置Y=Y+tm.tmHeight+30*tm.tmExternalLeading;Y=Y+tm.tmHeight+30*tm.tmExternalLeading;TextOut(hdc,X,Y,lpsz_5,strlen(lpsz_

54、5); TextOut(hdc,X,Y,lpsz_5,strlen(lpsz_5); /输出文本输出文本/在该行继续输出文本在该行继续输出文本GetTextExtentPoint32(hdc,lpsz_5,strlen(lpsz_5),&size);GetTextExtentPoint32(hdc,lpsz_5,strlen(lpsz_5),&size);/获取字符串的宽度获取字符串的宽度X=X+size.cx;X=X+size.cx;/获取起始坐标获取起始坐标TextOut(hdc,X,Y,lpsz_6,strlen(lpsz_6); TextOut(hdc,X,Y,lpsz_6,strle

55、n(lpsz_6); /输出文本输出文本EndPaint(hwnd,&ps);EndPaint(hwnd,&ps);break;break;佬晰猛政团猪赃屯漾京奠梁滥绍占帕淹缮敲烽咒谐盈者点孕荣囤蚕努鸭采第5章文本与字体ppt课件第5章文本与字体ppt课件25case WM_DESTROY:case WM_DESTROY: DeleteObject(hF_black); DeleteObject(hF_black); /退出窗口时删除自定义字体退出窗口时删除自定义字体 DeleteObject(hF_big); DeleteObject(hF_big); PostQuitMessage(0);

56、 PostQuitMessage(0); break; break;default:default: return DefWindowProc(hwnd,message,wParam,lParam); return DefWindowProc(hwnd,message,wParam,lParam); return 0;return 0; 眼浊奔游钨等锥抗咙亩荆潭饥京学者逝竞断娠惺停妈深椿蜀巷差澡耽造殊第5章文本与字体ppt课件第5章文本与字体ppt课件26【例【例5-35-3】在窗口中显示出】在窗口中显示出2626个英文字母,个英文字母,从左向右从左向右字母依次位置提字母依次位置提高高1010

57、个像素单位,并且颜色变为红色,然后回到正常位置;当到达最个像素单位,并且颜色变为红色,然后回到正常位置;当到达最右端后改变方向从右向左依次变成红色并位置提高右端后改变方向从右向左依次变成红色并位置提高1010个像素单位。在个像素单位。在窗口的第二行显示窗口的第二行显示2626个字母,字体从正常到斜体,颜色从黑色到天蓝个字母,字体从正常到斜体,颜色从黑色到天蓝色不断变换。如图所示。色不断变换。如图所示。用用用用nCharnCharnCharnChar标志红标志红标志红标志红色跳起字母在色跳起字母在色跳起字母在色跳起字母在26262626个字母的位置个字母的位置个字母的位置个字母的位置用用bRig

58、htbRight,bLeftbLeft标志当前标志当前移动方向,初始化移动方向,初始化bRight=TRUEbRight=TRUE,bLeft=FALSEbLeft=FALSE侍呜荧锄竭励会卧空籽卡绎揭救沮寓膝尽哎铡蜂沫拉诺自擅蝎恢趋郝芜卿第5章文本与字体ppt课件第5章文本与字体ppt课件27本例题要解决动态显示问题本例题要解决动态显示问题:首先处理第一行字符:在首先处理第一行字符:在WM_PAINTWM_PAINT消息处理程序中,在得到了设消息处理程序中,在得到了设备环境句柄备环境句柄hDChDC后,调用用户自定义的函数后,调用用户自定义的函数CreateFont(hDC,nHeight,

59、bItalic)CreateFont(hDC,nHeight,bItalic),第一个参数,第一个参数hDChDC是设备环境是设备环境句柄,第句柄,第2 2个参数个参数nHeightnHeight是字体高度,第是字体高度,第3 3个参数个参数bItalicbItalic是斜字是斜字体的标志变量。体的标志变量。WM_CREATEWM_CREATE消息处理程序消息处理程序定时器定时器调用调用SetTimer()SetTimer()创建创建WM_TIMERWM_TIMER消息处消息处理程序理程序调用调用InvalidateRect()InvalidateRect()刷新刷新用户区用户区发送发送WM_

60、PAINTWM_PAINT消息消息实现实现动态动态显示显示闻捣肩趴赛结奇莱篆狸籽粪挽扩献阂措荆谆臃本婉乌梆摩沮诡偷吠醚剿钮第5章文本与字体ppt课件第5章文本与字体ppt课件28下面这段程序按照黑色的字体输出从字符串开头到当前位置的字符串:下面这段程序按照黑色的字体输出从字符串开头到当前位置的字符串: Y=tm.tmExternalLeading+10; Y=tm.tmExternalLeading+10;/设置输出字符的设置输出字符的Y Y坐标坐标 for(i=0;inChar;i+) for(i=0;inChar;i+) SetTextColor(hDC,RGB(0,0,0); SetTe

61、xtColor(hDC,RGB(0,0,0);/设置字体的颜色为黑色设置字体的颜色为黑色 X=X+tm.tmAveCharWidth*2; X=X+tm.tmAveCharWidth*2;/设置输出字符的设置输出字符的X X坐标坐标 TextOut(hDC,X,Y,&lpsz_1i,1);/ TextOut(hDC,X,Y,&lpsz_1i,1);/输出从第输出从第0 0个到第个到第nChar-1nChar-1个字符个字符 下面输出当前位置上的字符,当前位置的字符位置提高下面输出当前位置上的字符,当前位置的字符位置提高1010个像素单位,个像素单位,字体颜色为红色:字体颜色为红色:SetTex

62、tColor(hDC,RGB(255,0,0);/SetTextColor(hDC,RGB(255,0,0);/设置字体的颜色为红色设置字体的颜色为红色X=X+tm.tmAveCharWidth*2;X=X+tm.tmAveCharWidth*2;/设置输出字符的设置输出字符的X,YX,Y坐标坐标Y=tm.tmExternalLeading;Y=tm.tmExternalLeading;/提高提高1010个像素个像素hF = CreateFont(hDC,40,0);hF = CreateFont(hDC,40,0);/创建字体创建字体SelectObject(hDC,hF);SelectOb

63、ject(hDC,hF);/选入字体选入字体TextOut(hDC,X,Y,&lpsz_1nChar,1);/TextOut(hDC,X,Y,&lpsz_1nChar,1);/输出第输出第nCharnChar个字符个字符Y=tm.tmExternalLeading+10;Y=tm.tmExternalLeading+10;for(i=nChar+1;inCharlen;i+)for(i=nChar+1;inCharlen;i+) SetTextColor(hDC,RGB(0,0,0); / SetTextColor(hDC,RGB(0,0,0); /设置字体的颜色为黑色设置字体的颜色为黑色 X

64、=X+tm.tmAveCharWidth*2; / X=X+tm.tmAveCharWidth*2; /设置输出字符的设置输出字符的X X坐标坐标 TextOut(hDC,X,Y,&lpsz_1i,1); TextOut(hDC,X,Y,&lpsz_1i,1);/输出后面的字符输出后面的字符 添崎九糕贡袜狭原献擎篙患帛研信宰吴蝶狈芦堰晶厂礼坡嚏异学藕痰沏玉第5章文本与字体ppt课件第5章文本与字体ppt课件29 下面设置下面设置bRightbRight和和bLeftbLeft的值。的值。if(nChar = nCharlen)if(nChar = nCharlen)/当输出到最后的一个字符时当

65、输出到最后的一个字符时 bRight = FALSE;bRight = FALSE;/改变红色字移动的方向为向左改变红色字移动的方向为向左bLeft = TRUE;bLeft = TRUE; else(nChar = 0)else(nChar = 0)/当输出到第一个字时当输出到第一个字时 bRight = TRUE;bRight = TRUE;/改变红色字移动的方向为向右改变红色字移动的方向为向右bLeft = FALSE;bLeft = FALSE; if(bRight = TRUE) nChar+;if(bRight = TRUE) nChar+;else nChar-;else nCh

66、ar-;如果如果nChar=nChar=等于字符串长度等于字符串长度= =已到了字符串末尾,将已到了字符串末尾,将bRightbRight置为置为TrueTrue字符长度字符长度=0=0时,已到了最左端,将时,已到了最左端,将bLeftbLeft置为置为TrueTrue;当当bRight=TruebRight=True时字符位置标志时字符位置标志nCharnChar加加1 1,当,当bLeft=TruebLeft=True时,字符位置标时,字符位置标志变量减志变量减1 1。喊萤根痴赐诱坏更忘账石厅姚灵墓怒涡绪防邵函势曰暇叉秘紊帆瞒府目别第5章文本与字体ppt课件第5章文本与字体ppt课件30下

67、面输出第下面输出第2 2行字符:在行字符:在WM_PAINTWM_PAINT处理程序中,加入下列代码:处理程序中,加入下列代码:hF = CreateFont(hDC,40,bItalic);hF = CreateFont(hDC,40,bItalic);/创建字体,大小为创建字体,大小为4040SelectObject(hDC,hF);SelectObject(hDC,hF);/选入字体选入字体X = tm.tmAveCharWidth*2;X = tm.tmAveCharWidth*2;/设置输出位置设置输出位置Y = tm.tmHeight*2;Y = tm.tmHeight*2;if(

68、bItalic = TRUE) if(bItalic = TRUE) SetTextColor(hDC,RGB(0,0,0);SetTextColor(hDC,RGB(0,0,0); else else SetTextColor(hDC,RGB(0,255,255);SetTextColor(hDC,RGB(0,255,255);TextOut(hDC,X,Y,lpsz_1,strlen(lpsz_1);TextOut(hDC,X,Y,lpsz_1,strlen(lpsz_1);/输出输出if(bItalic = TRUE) if(bItalic = TRUE) bItalic=FALSE;b

69、Italic=FALSE; else else bItalic=TRUE;bItalic=TRUE;调用用户自定义函数调用用户自定义函数CreateFont()CreateFont()创建斜体字,确定输出位置创建斜体字,确定输出位置根据根据bItalicbItalic的状态设置字体的颜色。的状态设置字体的颜色。当当bItalicbItalic为真时,输出斜体天蓝色字符;为假时,输出正常黑色字体为真时,输出斜体天蓝色字符;为假时,输出正常黑色字体最后对最后对bItalicbItalic取反,在下一次显示与此次不同的另一种效果。取反,在下一次显示与此次不同的另一种效果。砧详澜衅季费木藏猾剃晰纠尖鹿

70、聪殆错庐摸澡炸禾惯拳衍仪裙颤浪落延活第5章文本与字体ppt课件第5章文本与字体ppt课件31【例【例5 5-4】将一首四句的古诗从右到左竖排输出。要求窗口每次接收】将一首四句的古诗从右到左竖排输出。要求窗口每次接收到到WM_PAINT消息时都刷新显示的文本。消息时都刷新显示的文本。 腹棱养椿跟砚缩齿晨劳赦今拖亭牟云纤糊忽击咆篙滥恍撅尚淀沸哉致乏微第5章文本与字体ppt课件第5章文本与字体ppt课件32#include#include#include#include#include#includelong WINAPI WndProc(HWND hWnd,UINT iMessage,UINT w

71、Param,LONG lParam);long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);HWND hWndMain;HWND hWndM

72、ain;/主函数主函数int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)LPSTR lpCmdLine, int nCmdShow) MSG Message;MSG Message;if(!InitWindowsClass(hInstance)if(!InitWindowsClass(hInstance)return FALSE

73、;return FALSE;if(!InitWindows(hInstance,nCmdShow)if(!InitWindows(hInstance,nCmdShow)return FALSE;return FALSE;while(GetMessage(&Message,0,0,0)while(GetMessage(&Message,0,0,0)/消息循环消息循环TranslateMessage(&Message);TranslateMessage(&Message);DispatchMessage(&Message);DispatchMessage(&Message); return Mes

74、sage.wParam;return Message.wParam; 彼远色坎毕榨冕撩阜酸迫狐鸿测著掏巡塞忙曳了萝耶胺簇尔咖纶拂尊册公第5章文本与字体ppt课件第5章文本与字体ppt课件33long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)1. static long nXChar,nCaps,nYChar;1. static long nXChar,nCaps,nYChar

75、;2. int pointx,pointy,int i,j;2. int pointx,pointy,int i,j;3. HDC hDC; 3. HDC hDC; /定义指向设备环境的句柄定义指向设备环境的句柄4. TEXTMETRIC tm;4. TEXTMETRIC tm;/存放字体各种属性的结构体变量存放字体各种属性的结构体变量5. PAINTSTRUCT PtStr; 5. PAINTSTRUCT PtStr; /指向包含绘图信息的结构体变量指向包含绘图信息的结构体变量6. static char *textbuf4=6. static char *textbuf4=故人西辞黄鹤楼故

76、人西辞黄鹤楼, , 烟花三月下扬州烟花三月下扬州, 孤帆远影碧空尽孤帆远影碧空尽, , 唯见长江天际流唯见长江天际流;7. switch(iMessage) 7. switch(iMessage) /处理消息处理消息8. 8. case WM_CREATE:case WM_CREATE:/处理窗口创建消息处理窗口创建消息9.9. hDC=GetDC(hWnd) ; hDC=GetDC(hWnd) ; /获取当前设备表句柄获取当前设备表句柄10.10. GetTextMetrics(hDC,&tm); GetTextMetrics(hDC,&tm); /获取字体信息获取字体信息11.11. nX

77、Char=tm.tmAveCharWidth; nXChar=tm.tmAveCharWidth; /获取字符宽度获取字符宽度12. nYChar=tm.tmHeight+tm.tmExternalLeading;12. nYChar=tm.tmHeight+tm.tmExternalLeading;/字符高度字符高度13.13. nCaps=(tm.tmPitchAndFamily&1?3:2)*nXChar/2; nCaps=(tm.tmPitchAndFamily&1?3:2)*nXChar/2;/字间距字间距14.14. ReleaseDC(hWnd,hDC); return 0; R

78、eleaseDC(hWnd,hDC); return 0;/释放当前设备句柄释放当前设备句柄15.15.case WM_PAINT: case WM_PAINT: /处理重画消息处理重画消息16.16. hDC=BeginPaint(hWnd,&PtStr); hDC=BeginPaint(hWnd,&PtStr); /开始绘图开始绘图17.17. for(i=4;i0;i-) for(i=4;i0;i-) 18.18. for(j=0;j7;j+)for(j=0;j7;j+)/输出文本输出文本19.19. pointx=100+i*nXChar*5; pointx=100+i*nXChar*

79、5;pointy=50+j*(nYChar+nCaps);pointy=50+j*(nYChar+nCaps);20.20. TextOut(hDC,pointx,pointy,textbuf4-i+j*2,2); TextOut(hDC,pointx,pointy,textbuf4-i+j*2,2); 21. EndPaint(hWnd,&PtStr); return 0; 21. EndPaint(hWnd,&PtStr); return 0; /结束绘图结束绘图22.22.case WM_DESTROY: /case WM_DESTROY: /结束应用程序结束应用程序 PostQuitM

80、essage(0); PostQuitMessage(0);return 0;return 0;23.23.default:default:return(DefWindowProc(hWnd,iMessage,wParam,lParam);return(DefWindowProc(hWnd,iMessage,wParam,lParam);挝妇参赢渴公周传雾敲翔宠汀卧滁疯嘎遗这盾刷区蚜收序捣瘩健刻千汤睬第5章文本与字体ppt课件第5章文本与字体ppt课件34创建自定建自定义字体的例字体的例题题程序程序。在窗口中显示。在窗口中显示“自定义的字体自定义的字体”,字,字体颜色为红色,背景色为蓝色。其运

81、行结果应如下图所示:体颜色为红色,背景色为蓝色。其运行结果应如下图所示: 何于五乏声疏矾张敬偷样事梆资椽章直肆楼烯栓钳分讯牟滔秋凭幸趋豌沼第5章文本与字体ppt课件第5章文本与字体ppt课件35LRESULT CALLBACK WndProc( HWND hwnd,UINT message, WPARAM wParam,LPARAM lParam) 1. HDC hdc ;/设备句柄设备句柄 2. PAINTSTRUCT ps ;/画刷结构画刷结构 3. int Xchar,Ychar; 4. SIZE size; 5. LPCTSTR *pstring= “自定义的字体自定义的字体”; 6.

82、 RECTrect ;/无效矩形区无效矩形区 7. HFONT holdFont,hnewFont; 8. switch (message)/消息处理函数消息处理函数9. case WM_CREATE: return 0; /窗口创建窗口创建10. case WM_PAINT:/绘制消息绘制消息11.hnewFont=CreateFont /创建一种新的逻辑字体创建一种新的逻辑字体12. ( 64,0, 0, 0, 500,0,0,0,13. GB2312_CHARSET,14. OUT_DEFAULT_PRECIS,15. CLIP_DEFAULT_PRECIS,16. DEFAULT_QU

83、ALITY,17. DEFAULT_PITCH & FF_DONTCARE,18. “黑体黑体”);敖孝秘战擂喷叫端伴狰可潍锹坯麦军郸掉雾网骨躇碱准井愈巍敦赔垃并矣第5章文本与字体ppt课件第5章文本与字体ppt课件3619. hdc=BeginPaint (hwnd, &ps); /得到设备环境句柄得到设备环境句柄20. GetClientRect (hwnd, &rect); /得到需要绘制的客户区得到需要绘制的客户区21.holdFont=(HFONT)SelectObject(hdc,hnewFont); /选择新的字体选择新的字体22. SetTextColor(hdc,RGB(25

84、5,0,0); /设置文本颜色设置文本颜色23. SetBkColor(hdc,RGB(0,0,255); /设置背景颜色设置背景颜色 24. GetTextExtentPoint32(hdc,pstring,12,&size);25.Xchar=(rect.right-rect.left)/2-size.cx/2; 26. Ychar=(rect.bottom-rect.top)/2-size.cy/2;27. TextOut(hdc,Xchar,Ychar,pstring,12);28. SelectObject(hdc,holdFont); /保存原来的字体格式保存原来的字体格式29. DeleteObject(hnewFont); /删除新的字体格式删除新的字体格式30. EndPaint (hwnd, &ps) ; /结束绘制结束绘制 return 0 ; case WM_DESTROY:/退出消息退出消息PostQuitMessage (0) ;return 0 ; return DefWindowProc(hwnd,message,wParam,lParam) ;徽燃净舜雹她筋虚康凭啄府哉涧扣佣圃涉羔蜘锣甄及逛虞宛略契就快折星第5章文本与字体ppt课件第5章文本与字体ppt课件37

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号