为何函数GetGlyphOutline(nChar,GGO_BITMAP,&lpgm,0,NULL,&mat2)的返回值始终为-1 ??

jack_415 2007-11-06 04:29:36
我通过GetGlyphOutline()函数来获取system font的字模,程式每次都跑到 “1”处跳出,cbBuffer 的值始终为-1,请教各位,为什么呢?
CClientDC DC(this);

//定义GLYPHMETRICS
GLYPHMETRICS lpgm;
//定义MAT
MAT2 mat2;
memset(&mat2,0,sizeof(mat2));
mat2.eM11.value=1;
mat2.eM11.fract=0;
mat2.eM12.value=0;
mat2.eM12.fract=0;
mat2.eM21.value=0;
mat2.eM21.fract=0;
mat2.eM22.value=1;
mat2.eM22.fract=0;

UINT nChar = 'A';
//获取本字符需要的缓冲区大小
cbBuffer = DC.GetGlyphOutline(nChar,GGO_BITMAP,&lpgm,0,NULL,&mat2);
DWORD dwErr = GetLastError();
if(cbBuffer<0 ) return; //-----------------------1
//缓冲区大小
int cbBuffer;
//定义字符图像数据缓冲区
BYTE *lpvBuffer;
//开辟缓冲区
lpvBuffer = new BYTE[cbBuffer];
//填充字符图像缓冲区lpvBuffer
cbBuffer = DC.GetGlyphOutline(nChar,GGO_BITMAP,&lpgm,cbBuffer,lpvBuffer,&mat2);
...全文
206 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobommsky 2011-01-06
  • 打赏
  • 举报
回复
我也是,最近使用这个函数,就遇到这个问题,总是失败.楼主现在解决了吗?还望指点一下!

6,871

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧