//经常遇到这样的情况,在非英文系统下编写好的软件在英文系统上运行时显示为乱码
//大部分就是由于缺少必要的支持字体引起的
//因此如果考虑在英文系统上使用这些字体,我们可以把必须的字体以资源的方式包含到应用程序中
//这样既可以使程序能正常运行,同时也减少了程序打包的繁琐
//hResInstance 资源句柄
//lpsFont 字体资源ID
//lpsType 字体资源类型
void InstallResourceFont(HINSTANCE hResInstance, LPCTSTR lpsFont, LPCTSTR lpsType)
{
HRSRC hRes = FindResource(hResInstance, lpsFont, lpsType);
if(hRes)
{
HGLOBAL hMem = LoadResource(hResInstance, hRes);
void *pData = LockResource(hMem);
DWORD dwLen = SizeofResource(hResInstance, hRes);
DWORD dwFonts = 0;
HANDLE m_hFont = AddFontMemResourceEx(
pData, // font resource
dwLen, // number of bytes in font resource
NULL, // Reserved. Must be 0.
&dwFonts); // number of fonts installed
if(m_hFont == NULL)
AfxMessageBox(_T("InstallResourceFont function fails"));
}
}
//应用示例
InstallResourceFont(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_FONT_1), _T("FONT"));
AddFontMemResourceEx 安装资源中包含的字体
最新推荐文章于 2021-04-29 10:48:42 发布