M8 中设置文字属性的两种方法对比和分析

来源:互联网 发布:陶哲轩实分析 知乎 编辑:程序博客网 时间:2024/04/30 07:54

 M8 是基于WinCE的开发平台,但是是那种减肥版的,很多功能都不能用,比如CString这个类,只要包含#include <afx.h> 则模拟器就会死在进程创建的地方,这个应该是winCE不支持。今天试验了两种设置字体并显示的方法,下面一一列举:

1.GetFont()的方法,具体使用如下:

HFONT hfont = FontHelper::GetFont(80);//80大小的字体
 HFONT hOldFont = (HFONT)SelectObject(hdcMem, hfont);//设置到DC
 int bkMode = SetBkMode(hdcMem, TRANSPARENT);//设置模式
 COLORREF color = SetTextColor(hdcMem, RGB(255, 255, 255));//设置颜色
 TCHAR szTitle[250];                    // The title bar text
 CMzRect rcText(0, 0, 444, 444);//注意MZ的Rect是左上角坐标和右下角坐标,没有宽和高
 HINSTANCE hInstance = GetModuleHandle(0);//获取hInstance,这个和windows编程一样
 LoadString(hInstance,IDS_STRING130,szTitle,250);//从资源string table里面获得文字
 DrawText(hdcMem, szTitle, _tcslen(szTitle), rcText, DT_CENTER);画到屏幕上

 

2.使用LOGFONT设置字体

CMzFont hFont;
 LOGFONT  logFont; //创建LOGFONT的数据
 memset(&logFont,0,sizeof(LOGFONT)); // 清零
 logFont.lfHeight=30; //设置高度这个等效于GetFont
 logFont.lfWeight = 15;设置字体的重量,也就是粗细
 wcscpy(logFont.lfFaceName,L"Arial");  //给他设置字体名称
 hFont.CreateFontIndirect(&logFont);    ////创建字体

//下面基本一样
 SelectObject(hdcMem,hFont);  //

 int bkMode = SetBkMode(hdcMem, TRANSPARENT);
 COLORREF color = SetTextColor(hdcMem, RGB(255, 0, 0));
 TCHAR szTitle[250];                    // The title bar text
 CMzRect rcText(0, 0, 720, 480);
 HINSTANCE hInstance = GetModuleHandle(0);
 LoadString(hInstance,IDS_STRING_GAMERULE,szTitle,250);

 DrawText(hdcMem, szTitle, _tcslen(szTitle), rcText, DT_LEFT);

 

 

可以看到两种方法都是可以实现DrawText,第一种可以用于简单的设置,只要一个函数就搞定,第二种呢可以设置一些详细LOGFONT  里面的属性,还有宽度啊什么的,具体还没试验。。

 

 

以上就是设置字体的两种方法,同时提供了如何从string table中获得字符串的方法

HINSTANCE hInstance = GetModuleHandle(0);
 LoadString(hInstance,IDS_STRING_GAMERULE,szTitle,250);

 

 

 

 

 

原创粉丝点击