使用控件默認的字體,同時顯示日文和中文時,會出現亂碼,根據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" )
);
簡單說明一下參數。
<!--[if !supportLists]-->1. <!--[endif]-->第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);
<!--[if !supportLists]-->2. <!--[endif]-->第5個參數
可以設置字體是否加粗
<!--[if !supportLists]-->3. <!--[endif]-->第6個參數
設置字體是否傾斜
<!--[if !supportLists]-->4. <!--[endif]-->第7個參數
設置字體是否有下劃線
<!--[if !supportLists]-->5. <!--[endif]-->最後一個參數
字體的名稱。
上述的轉換沒有測試,如有問題再修改。