使用控件默认的字体,同时显示日文和中文时,会出现乱码,根据SkinMagic里面的设置,使用MS Sans Serif(微软细明字)字体,可以解决该问题。
使用该字体同时在文本控件上显示中文,日文和英文三种语言都可以。
创建字体,然后将文本控件SetFont。
m_fontScrollText.CreateFont( 18,
0,
0,
0,
FW_NORMAL,
FALSE,
FALSE,
FALSE,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH,
_T( "MS Sans Serif" )
);
简单说明一下参数。
1. 第1个参数
字体大小,在磅数和逻辑高度之间有一个换算的方法。
方法1:
在CreatePointFont的源码中
int nHeight; // 字体的高度
POINT pt;
pt.y = ::GetDeviceCaps(hDC, LOGPIXELSY) * PointSize;
pt.y /= 720; // 72 points/inch, 10 decipoints/point
::DPtoLP(hDC, &pt, 1);
POINT ptOrg = { 0, 0 };
::DPtoLP(hDC, &ptOrg, 1);
nHeight = -abs(pt.y - ptOrg.y);
方法2:
nHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
2. 第5个参数
可以设置字体是否加粗
3. 第6个参数
设置字体是否倾斜
4. 第7个参数
设置字体是否有下划线
5. 最后一个参数
字体的名称。
上述的转换没有测试,如有问题再修改。