这些代码错在哪?AddFontResource("d:\\myfont.ttf"); SendMessage(WND_BROADCAST,0,0); //应该是:SendMessage(HWM_FONTCHANGE, WND_B

rdr 2005-04-21 01:38:26
把自己的字体文件加入字体列表,下面的代码不管用,不知道都错在哪儿?
  注:1.该字体文件名与字体名称相同。
    2.将字体放在windows\fonts目录下,我的程序启动后字体不能正常显示,需要点击运行字体文件才管用。
代码如下:
  AddFontResource("d:\\myfont.ttf");
  SendMessage(WND_BROADCAST,0,0);
//应该是:SendMessage(HWM_FONTCHANGE, WND_BROADCAST,0,0);
//但这样写,编译时会报错。

//是否先用CreateScalableFontResource()创建资源文件?该如何调用该函数?

...全文
2375 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
老夏Max 2005-05-09
  • 打赏
  • 举报
回复
永久安装使用,类似下面的代码:
CString sSourceDir = "D:\\TT6\\";
//.TTF file name.
CString sFontFileName = "TT6.TTF";
//Font description (as it will appear in Control Panel).
CString sFontName = "金梅粗圓體(TrueType)";

TCHAR sWinDir [MAX_PATH];
GetWindowsDirectory(sWinDir,MAX_PATH);
CString sFontDir(sWinDir);
sFontDir += "\\Fonts\\";

CString sFOTFile = sFontDir;

sFOTFile += (sFontFileName.Left(sFontFileName.GetLength()-4) + ".FOT");

CopyFile((sSourceDir + sFontFileName),(sFontDir + sFontFileName),FALSE);
BOOL Result;
Result = CreateScalableFontResource(0, sFOTFile, sFontFileName, sFontDir);
Result = AddFontResource(sFOTFile);
HKEY phkResult;
DWORD RegResult;
LONG Rlt = RegCreateKeyEx(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts", 0, "REG_SZ",
0, KEY_WRITE, 0,&phkResult ,®Result);
if(Rlt != ERROR_SUCCESS)
{
AfxMessageBox("Create Key Failed!");
}

RegSetValueEx(phkResult, sFontName, 0, REG_SZ, (CONST BYTE* )((LPCTSTR)sFontFileName), sFontFileName.GetLength());
RegCloseKey(phkResult);
::SendMessage (HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
DeleteFile((sFontDir + sFontFileName));
老夏Max 2005-04-21
  • 打赏
  • 举报
回复
//应该是:SendMessage(HWM_FONTCHANGE, WND_BROADCAST,0,0);
//但这样写,编译时会报错。
=============================
使用全局API函数:
::SendMessage(HWND_BROADCAST,WM_FONTCHANGE, 0, 0);
编译就不会出错了!
老夏Max 2005-04-21
  • 打赏
  • 举报
回复
如果可以的话,你将你的程序源代码发给我,我看看能不能改好!
xia_qingqi@broadxent.com.cn
rdr 2005-04-21
  • 打赏
  • 举报
回复
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
不好意思!上面这个函数没有用错,是我在这里写错的。
vcleaner提的文章我看过了,我英语不好,只识得文章中的绝大部分单词,文意看的似懂非懂。
现在还是茅塞未开,多谢vcleaner!
   能有相关代码就好了!
老夏Max 2005-04-21
  • 打赏
  • 举报
回复
CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统 !
老夏Max 2005-04-21
  • 打赏
  • 举报
回复
1.关于字体:
http://msdn.microsoft.com/library/en-us/gdi/fontext_371v.asp
2.安装和删除字体
http://msdn.microsoft.com/library/en-us/gdi/fontext_2ylq.asp
老夏Max 2005-04-21
  • 打赏
  • 举报
回复
如果是使用资源中的字体,应该:
To install unique hidden font resources follow these steps:

1、Copy the TrueType font file to a temporary file with a unique filename such as "ttfont01.ttf" that can be owned by the instance of the application.


2、Call the CreateScalableFontResource() function to create a uniquely named temporary hidden font resource file that can also be owned by the instance of the application.


3、Call the AddFontResource() function to install this uniquely named font resource file for this instance of the application.


4、Use the font in the application as desired.


5、When the instance of the application terminates or is otherwise finished with the font file, it should uninstall the font resource by calling the RemoveFontResource() function until it fails.


6、Lastly, the instance of the application should delete the temporary font resource file and the temporary TrueType font file that it created.
老夏Max 2005-04-21
  • 打赏
  • 举报
回复
使用应该是这样的:
1.使用 AddFontResource 把您的字体送入 Windows 字体列表。
2.使用 SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0) 广播通知。
3.这时候开始,您的字体才可以随意使用。
4.使用 RemoveFontResource 从 Windows 字体列表删除您的字体。
5.SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0) 再通知一遍。
老夏Max 2005-04-21
  • 打赏
  • 举报
回复
应该是:SendMessage(HWND_BROADCAST,WM_FONTCHANGE, 0, 0);
印刷电路板(PCB)作为电子元件的关键支撑体,在电子设备中扮演着不可或缺的角色,其市场发展态势备受关注。QYResearch 的调研数据为我们揭示了该市场的全景:2024 年,全球印刷电路板市场规模约达 782.9 亿美元,而展望 2031 年,这一数字有望攀升至 1012.7 亿美元,在 2025 - 2031 期间,年复合增长率(CAGR)预计保持在 3.8%。然而,当前美国 2025 年关税框架的潜在变动,已然在全球市场掀起波澜,对印刷电路板市场的竞争格局、区域经济协同以及供应链体系产生着深远影响。 一、印刷电路板基础概述 印刷电路板,又被称作印制电路板或印刷线路板,常见英文缩写为 PCB(Printed circuit board)或 PWB(Printed wire board)。其内部存在金属导体,承担着连接电子元器件线路的重任。传统电路板主要运用印刷蚀刻阻剂的工艺,以此构建电路的线路与图面,这也是其名称的由来。在现代电子技术领域,PCB 通过电子印刷术制造而成,它成功搭建起电子元器件之间的电气连接桥梁,成为各类电子设备的核心组件。无论是体积小巧的智能穿戴设备,还是大型的服务器系统,只要其中配备集成电路等电子元件,PCB 必然 “参与其中”。 二、市场规模增长引擎 (一)中国主导地位凸显 中国在全球印刷电路板市场中占据着举足轻重的地位。据预测,2025 年中国市场规模有望达到 4333.21 亿元,在全球市场的占比将超过 50%。这一卓越成绩的背后,人工智能(AI)与新能源汽车产业功不可没,二者已成为驱动中国 PCB 市场增长的核心动力。以 AI 产业为例,随着 AI 技术的迅猛发展,对算力的需求呈爆发式增长,这使得 AI 服务器的市场需求大幅提升。而每台 AI 服务器中 PCB 的价值量可达 5000 元,预计到 2025 年,全球 AI 服务器相关的 PC
资源下载链接为: https://pan.quark.cn/s/637cf229ceb0 “official_web_copy_redbook” 是一个以小红书官网首页为蓝本,运用多种前端技术搭建而成的示例项目。开发者运用了 Bootstrap、jQuery、HTML5、CSS 以及 JavaScript 等一系列技术栈来完成页面制作。以下是对这些技术及其在项目中应用的详细阐述。 HTML5 作为超文本标记语言的最新版本,为网页开发带来了诸多新元素和功能,其核心目标是提升网页的可读性、可访问性与互动性。在本项目中,HTML5 承担着构建网页基本架构的重任,它通过定义头部、导航、主体、底部等不同内容区块,清晰地划分页面结构。新出现的

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧