为何函数GetGlyphOutline(nChar,GGO_BITMAP,&lpgm,0,NULL,&mat2)的返回值始终为-1 ??
我通过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);