2 Star 4 Fork 4

精易科技/eapi

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
eapi_29_AddFont.cpp 1.61 KB
一键复制 编辑 原始数据 按行查看 历史
AlongsCode 提交于 2023-02-09 00:42 +08:00 . 部分重构
#include "..\include_eapi_header.h"
#include<shlwapi.h>
#include<shlobj_core.h>
#pragma comment(lib,"shlwapi.lib")
// 调用格式: SDT_INT 安装字体, 命令说明: "在Windows系统中添加一种字体资源。添加完毕后,该字体即可由任何Windows应用程序调用。成功返回1,失败返回0,如加载内存资源则返回安装临时字体的句柄,字体资源进程之间不可共享,可通过删除字体提前删除资源;"
// 参数<1>: 字体文件名或字体资源 _SDT_ALL, 参数说明: "字体资源文件的文件名。可以是.FON,.FNT,.TTF或.FOT文件。或者字体资源"
static bool AddFont(const std::string& FontPath)
{
char pszPath[MAX_PATH] = { 0 };
bool result = false;
if (SHGetSpecialFolderPathA(0, pszPath, 20, 0))
{
if (PathFileExistsA(FontPath.c_str()))
{
size_t iPos = FontPath.find_last_of('\\');
std::string filename = FontPath.substr(iPos, FontPath.length() - iPos);
filename = pszPath + filename;
if (CopyFileA(FontPath.c_str(), filename.c_str(), TRUE))
{
BOOL Ret = AddFontResourceA(FontPath.c_str());
result = (bool)Ret;
if (Ret) {
SendMessageA(HWND_BROADCAST, 0x1Du, 0, 0);
}
}
}
}
return result;
}
static HANDLE AddFont(LPBYTE FontPath)
{
DWORD dwFonts = 0;
return AddFontMemResourceEx(FontPath + sizeof(size_t) * 2, *reinterpret_cast<size_t*>(FontPath + sizeof(size_t)), 0, &dwFonts);
}
EAPI_EXTERN_C void eapi_AddFont_29_eapi(PMDATA_INF pRetData, INT nArgCount, PMDATA_INF pArgInf)
{
if (pArgInf->m_dtDataType == SDT_TEXT && pArgInf->m_pText) {
pRetData->m_int = AddFont(pArgInf->m_pText);
}
else if (pArgInf->m_dtDataType == SDT_BIN)
{
pRetData->m_int = reinterpret_cast<intptr_t> (AddFont(pArgInf->m_pBin));
}
else
{
pRetData->m_int = 0;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/JYtechnology/eapi.git
git@gitee.com:JYtechnology/eapi.git
JYtechnology
eapi
eapi
master

搜索帮助