在CFont::CreateFont函数中的最后一个参数:lpszFacename就是字体样式名称。经过测试发现像微软雅黑、华文行楷、幼圆等字体无法绘制出对应的样式。
后来通过检测注册表来检查问题发现注册表中没有对应字体库,然后我又重新安装对应的字体库,注册表中也有了,通过以下代码检查:LONG ires;
HKEY hMyKey;
DWORD Type = REG_SZ;
DWORD count= 256;
byte mstr[256]="";
ires=RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts",
0, KEY_READ,&hMyKey);
if(ERROR_SUCCESS!=ires)
MessageBox("注册表读取错误");
else
ires=RegQueryValueEx(hMyKey,"微软雅黑 Bold (TrueType)",0,&Type,mstr,&count); if (mstr[0]=='\0') //没有安装
{return false;}
else
{return true;} 检测出微软雅黑等字体都安装了,但是绘制的时候除了微软雅黑的字体能显示正确,其他字体显示的都不对。
这是什么原因呢?
CFont支持所有字体样式还是只支持部分字体,能详细列举说明吗?
后来通过检测注册表来检查问题发现注册表中没有对应字体库,然后我又重新安装对应的字体库,注册表中也有了,通过以下代码检查:LONG ires;
HKEY hMyKey;
DWORD Type = REG_SZ;
DWORD count= 256;
byte mstr[256]="";
ires=RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts",
0, KEY_READ,&hMyKey);
if(ERROR_SUCCESS!=ires)
MessageBox("注册表读取错误");
else
ires=RegQueryValueEx(hMyKey,"微软雅黑 Bold (TrueType)",0,&Type,mstr,&count); if (mstr[0]=='\0') //没有安装
{return false;}
else
{return true;} 检测出微软雅黑等字体都安装了,但是绘制的时候除了微软雅黑的字体能显示正确,其他字体显示的都不对。
这是什么原因呢?
CFont支持所有字体样式还是只支持部分字体,能详细列举说明吗?
解决方案 »
- 组合框的 Drop List数据成员 怎么只能是int呀 为什么不是CString呀
- 自绘树 与 自绘滚动条 协同工作问题
- 使用LIB.EXE从DLL生成lib文件,其命名约定是如何的?
- 收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 程序错在哪啦??大侠们 我快疯了 帮帮我吧~~
- 2个CString类型的数据如何比较?
- 基于单文档的多对话框同时显示2
- 我现在想封装一个DLL,然后由其它开发工具调用
- 获取子字符串
- 请教各位:用微软提供的MSComm控件通过串行端口发送和接收数据碰到的问题
- 请问SetWindowExt()、SetViewportsExt()的作用是什么?如何理解?
- :-1: error: LNK1104: 无法打开文件“debug\MouseEvent.exe”
- 有没有做过样条曲线求交点的
oid CSDIt1View::OnDraw(CDC* pDC)
{
CSDIt1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return; // TODO: add draw code for native data here
int nSaveDC = pDC->SaveDC(); LOGFONT lgFont={0};
lgFont.lfHeight = -MulDiv(72, pDC->GetDeviceCaps(LOGPIXELSY), 72);
lgFont.lfCharSet = DEFAULT_CHARSET;
_tcscpy_s(lgFont.lfFaceName, _T("微软雅黑"));
lgFont.lfWeight = FW_BOLD; CFont mFont;
mFont.CreateFontIndirect(&lgFont);
CFont *pOldFont = pDC->SelectObject(&mFont); pDC->SetTextColor(RGB(255, 0, 0));
pDC->TextOut(10, 10, lgFont.lfFaceName); pDC->SelectObject(pOldFont);
pDC->RestoreDC(nSaveDC);}