123456

 

调用临时Fonts

系统Windows\Fonts找不到,没法了,自己在EXE目录下建一个Fonts目录,直接临时调用:

 1.

int XXX::InstallTempFont()
{
	wchar_t   path[MAX_PATH];   
	GetModuleFileName(NULL,path,MAX_PATH);
	CString szPath = path;
	int nFind = szPath.ReverseFind('\\');
	szPath = szPath.Left(nFind) + TEXT("\\Fonts\\TruthCYR-Regular.otf");
	return AddFontResourceEx(szPath, FR_PRIVATE, 0);}

void XXX::UnstallTempFont()
{
	wchar_t   path[MAX_PATH];   
	GetModuleFileName(NULL,path,MAX_PATH);
	CString szPath = path;
	int nFind = szPath.ReverseFind('\\');
	szPath = szPath.Left(nFind) + TEXT("\\Fonts\\TruthCYR-Regular.otf");
    RemoveFontResourceEx(szPath, FR_PRIVATE, 0);}
2.
HINSTANCE hResInstance = AfxGetResourceHandle();
	HRSRC res = FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_FONT_PHONETIC), _T("BINARY"));
	if (res) 
	{
		HGLOBAL mem = ::LoadResource(hResInstance, res);
		void *data = ::LockResource(mem);
		DWORD len = ::SizeofResource(hResInstance, res);
		DWORD nFonts = 0;

		HANDLE hFont = AddFontMemResourceEx(
			data,          // font resource
			len,           // number of bytes in font resource 
			NULL,          // Reserved. Must be 0.
			&nFonts);      // number of fonts installed
		if (!hFont)
		{
			AfxMessageBox(_T("字体加载失败!"));
		}
	}

不要使用AddFontResource!!!!!!!!!!!!!!!!!!!

posted on   hgy413  阅读(185)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)

导航

统计

点击右上角即可分享
微信分享提示