求助,不能正常应用中文字体(Unicode环境),
通过以下代码调出字体选择框,可以改变字体大小,正斜,就是不能应用不同的中文字体,为什么呢?代码如下:LOGFONT lf;
int i;

{
CClientDC dcScreen(NULL);

i = dcScreen.GetDeviceCaps(LOGPIXELSY);
} memset(&lf, 0, sizeof(LOGFONT)); lf.lfHeight = (i * font.height)/72;
lf.lfWeight = font.weight;
lf.lfItalic = (_TCHAR) font.italic;
lf.lfCharSet = DEFAULT_CHARSET;
_tcscpy(lf.lfFaceName, (_TCHAR const *) font.name);

CFontDialog dialog(&lf); dialog.m_cf.Flags |= CF_ANSIONLY | CF_BOTH;CF_TTONLY
dialog.m_cf.Flags &= ~CF_EFFECTS;

if (dialog.DoModal() == IDOK)
{
double d = -((lf.lfHeight * 72.0)/i);

font.height = (int) (d + 0.5);
font.weight = lf.lfWeight;
font.italic = lf.lfItalic;
font.name = lf.lfFaceName; return TRUE;
}
return FALSE;

解决方案 »

  1.   

    是不是你输出的时候没有按UNICODE输出?
    英文的编码在任何时候都是一样的
    所以没影响~~
    中文的就不一样了
      

  2.   

    感谢各位!
    问题解决了."ANSI_CHARSET" 改一下就OK了.cFont.CreateFont(-height, 0, i, i, weight, (_TCHAR) font.italic, (_TCHAR) underline, 0, ANSI_CHARSET,
    OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, (_TCHAR) (FF_SWISS | DEFAULT_PITCH | TMPF_TRUETYPE), font.name);----->cFont.CreateFont(-height, 0, i, i, weight, (_TCHAR) font.italic, (_TCHAR) underline, 0, DEFAULT_CHARSET,
    OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, (_TCHAR) (FF_SWISS | DEFAULT_PITCH | TMPF_TRUETYPE), font.name);