在 MFC 对话框中,我希望增加自定义汉字,
但是碰到一个奇怪的问题
用程序 AddFontResource 添加字库文件成功SendMessageW(WM_FONTCHANGE,0,0);然后调用字库,结果显示为系统默认的字库。如果调用 CFontDialog 选择一次我自定义的字库后
就可以显示出我自定义的汉字了~!a = AddFontResource(_T("OCR1B10BT.ttf"));
//a = AddFontResource(_T("OCR-B 10 BT"));
SendMessageW(WM_FONTCHANGE,0,0); CFont   InfofontID;
wsprintf(m_lf.lfFaceName,_T("OCR-B 10 BT"));
m_lf.lfHeight = -15;
BOOL nFontCreate = InfofontID.CreateFontIndirectW(&m_lf);
pdc->SelectObject(&InfofontID);
memset(nBufTchar,0,sizeof(nBufTchar));
::MultiByteToWideChar(CP_ACP, 0, m_CardInfo.id, strlen(m_CardInfo.id), nBufTchar, 128); 
pdc->TextOut(SYSTEM_ID_X,SYSTEM_ID_Y,nBufTchar);

解决方案 »

  1.   


    比如下面是我的对话框属性,我直接把FONT 9, "MS Sans Serif", 0, 0, 0x1这个改下,就成了自己想要的字体了啊
    IDD_LOGINCONFIG_DIALOG DIALOGEX 0, 0, 276, 201
    STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
    EXSTYLE WS_EX_APPWINDOW
    FONT 9, "MS Sans Serif", 0, 0, 0x1
      

  2.   

    BOOL nFontCreate = InfofontID.CreateFontIndirectW(&m_lf);
    用这个方法字体 使用不成功,
    但是调用一次 CFontDialog  选择任意一个字库再用
    BOOL nFontCreate = InfofontID.CreateFontIndirectW(&m_lf); 调用自定义字库就可以了
    不知道为什么?最后改成CFont   InfofontID;
    InfofontID.CreatePointFont(147,_T("OCR-B 10 BT"),NULL);//选择字体 
    pdc->SelectObject(&InfofontID);这样就可以了。 不知道为什么呢??
      

  3.   

    m_lf logfont有14个参数吧,可能那个不对,看 Create 成功否?