在 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);
但是碰到一个奇怪的问题
用程序 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);
解决方案 »
- 有DDB图像文件吗? 还是现在所有的文件都是DIB的?
- directDraw创建了一个24位的离屏表面,靠上数据,怎么绘制到一个32位的主表面?
- 如何使用系统图标?
- DirectShow怎么得到所有的视频捕捉设备
- BCGControlBar中VisualManager是怎样获得MainFrame的消息的?
- LoadFrame为什么不能设定正确的icon for MainWnd?
- 抓屏的时候鼠标停滞怎么办 ?
- "Please enter a integer between 1 and 200."
- 如何获得和释放系统图标资源
- 谁做过Powerpoint OLE?
- tinyxml 如何枚举所有内容,不关心其元素类型
- VC显示多个活动视图,如何在新建一个视图?
比如下面是我的对话框属性,我直接把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
用这个方法字体 使用不成功,
但是调用一次 CFontDialog 选择任意一个字库再用
BOOL nFontCreate = InfofontID.CreateFontIndirectW(&m_lf); 调用自定义字库就可以了
不知道为什么?最后改成CFont InfofontID;
InfofontID.CreatePointFont(147,_T("OCR-B 10 BT"),NULL);//选择字体
pdc->SelectObject(&InfofontID);这样就可以了。 不知道为什么呢??