c – 简单的方法来判断当前字体是否支持unicode字符?
作者:互联网
我正在使用Borland C Builder 2009,我会显示左右指向箭头,如下所示:
Button2->Hint = L"Ctrl+\u2190" ;
Button3->Hint = L"Ctrl+\u2192" ;
这在Windows 7上工作正常,应用程序使用字体’Segoe UI’.
在XP上我得到一个正方形而不是箭头,我在XP上使用字体’Tahoma’.
换句话说,XP中的Tahoma中没有提到的Unicode字符.
有一种简单快捷的方法可以简单地检查当前使用的字体是否支持所请求的Unicode字符?
如果是这样,我可以用’>’替换箭头或’<'.不完美,但足够好.我不想在这个阶段开始更改字体.
你的帮助表示赞赏
解决方法:
您可以使用GetFontUnicodeRanges()
查看当前在DC中选择的字体支持哪些字符.请注意,此API要求您调用一次以查找缓冲区需要的大小,以及第二次实际获取数据.
DWORD dwSize = GetFontUnicodeRanges(hDC, nullptr);
BYTE* bBuffer = new BYTE[dwSize];
GLYPHSET* pGlyphSet = reinterpret_cast<GLYPHSET*>(bBuffer);
GetFontUnicodeRanges(hDC, pGlyphSet);
// use data in pGlyphSet, then free the buffer
delete[] bBuffer;
GLYPHSET
结构有一个名为范围的成员数组,可用于确定字体支持的字符范围.
标签:c-3,c,winapi,cbuilder 来源: https://codeday.me/bug/20191005/1855850.html