MyException - 我的异常网
当前位置:我的异常网» VC/MFC » VC设立LOGFONT后字体没有变化

VC设立LOGFONT后字体没有变化

www.myexceptions.net  网友分享于:2013-04-10  浏览:46次
VC设置LOGFONT后字体没有变化

OnCreate:
m_strFont.Format("%s",FontWantedByUser(font_index));

LOGFONT lf;
pElement->GetLogFont(&lf);
_tcscpy(lf.lfFaceName, m_strFont);

pElement->SetFont(&lf);

void CxStatic::SetFont(LOGFONT *pLogFont, BOOL bRedraw /*= TRUE*/)
{
ASSERT(pLogFont);
if (!pLogFont)
return;

if (m_font.GetSafeHandle())
m_font.DeleteObject();

LOGFONT lf = *pLogFont;

m_font.CreateFontIndirect(&lf);

if (bRedraw)
RedrawWindow();
}

m_strFont如果是宋体或者隶体方正舒体等中文字体都没有问题,有几个英文字体如Batang,PMingLiU等,可以正常显示,但是换成Arial或者Times New Roman等大多数英文字体,就完全没有变化,debug跟了一下,发现LOGFONT的设置也没有问题,lfFaceName等参数也是正常的,请问这是什么原因?

我特意新建了一个dlg的程序,看了一下,也是一样。我在其他电脑上也试过,很多英文字体都没有变化

CDC *dc = this->GetDC();
CFont* pFont = dc->GetCurrentFont();
LOGFONT logFont ;
pFont->GetLogFont(&logFont);
strncpy(logFont.lfFaceName,"Arial",LF_FACESIZE-1);
logFont.lfFaceName[LF_FACESIZE-1]=0;
logFont.lfHeight = -32;
HFONT hFont = CreateFontIndirect(&logFont); 
dc->SelectObject(hFont);
dc->TextOut(100,100,"bbbbbbb");

------解决方案--------------------
放全局变量 看看

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有