应用程序加载外部字体文件(使用AddFontResource API函数指定字体)


[cpp]
 view plain copy

  1. /*
  2. MSDN:
  3. Any application that adds or removes fonts from the system font table should notify other windows of the change by sending a WM_FONTCHANGE message to all top-level windows in the operating system. The application should send this message by calling the SendMessage function and setting the hwnd parameter to HWND_BROADCAST.
  4. When an application no longer needs a font resource that it loaded by calling the AddFontResource function, it must remove that resource by calling the RemoveFontResource function.
  5. This function installs the font only for the current session. When the system restarts, the font will not be present. To have the font installed even after restarting the system, the font must be listed in the registry.
  6. */
  7. // 定义为成员变量
  8. CFont font;
  9. TCHAR szPath[MAX_PATH];
  10. // 初始化函数
  11. _tcscpy(szPath, _T("%s"), _T("F://11.ttf"));
  12. LOGFONT lf;
  13. lf.lfHeight = 60;
  14. lf.lfWidth = 30;
  15. lf.lfEscapement = 0;
  16. lf.lfOrientation = 0;
  17. lf.lfWeight = 90;
  18. lf.lfItalic = 0;
  19. lf.lfUnderline = 0;
  20. lf.lfStrikeOut = 0;
  21. lf.lfCharSet = DEFAULT_CHARSET;
  22. lf.lfOutPrecision = 0;
  23. lf.lfClipPrecision = CLIP_STROKE_PRECIS;
  24. lf.lfQuality = 0;
  25. lf.lfPitchAndFamily = 0;
  26. _tcscpy(lf.lfFaceName, _T("XXX")); // 这里就是字体名
  27. font.CreateFontIndirect(&lf);
  28. ASSERT(font.GetSafeHandle());
  29. // 之后就可以调用下面的代码来设置字体了
  30. if(!AddFontResource(szPath))
  31. {
  32. AfxMessageBox(_T("Load font failed."));
  33. return ;
  34. }
  35. ::SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
  36. GetDlgItem(IDOK)->SetFont(&font);
  37. // 最后不需要的时候释放字体资源
  38. RemoveFontResource(szPath);

http://blog.csdn.net/visualeleven/article/details/6248115

时间: 2024-12-22 17:09:52

应用程序加载外部字体文件(使用AddFontResource API函数指定字体)的相关文章

JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件

http://www.tuicool.com/articles/M7ZR3y 原文 http://blog.csdn.net/kylinsoong/article/details/12623997 主题 WildFlyXMLJBoss AS 内容概述 JBoss7/WildFly设底层框架一大亮点的Module class loading,及每一个相对独立的模块看作一个Module,每个Module都有自己的class loader,Module之间可以相互依赖,如下图: 当JBoss7安装完成

使用js加载器动态加载外部Javascript文件

今天在网上找到了一个可以动态加载js文件的js加载器,具体代码如下: JsLoader.js 1 var MiniSite=new Object(); 2 /** 3 * 判断浏览器 4 */ 5 MiniSite.Browser={ 6 ie:/msie/.test(window.navigator.userAgent.toLowerCase()), 7 moz:/gecko/.test(window.navigator.userAgent.toLowerCase()), 8 opera:/o

Vue 加载外部js文件

Vue.js  加载外部js文件 在项目内新建一个config.js //变量的定义 export var config = { baseurl:'http://172.16.114.5:8088/MGT2' } //函数的定义 export function formatXml(text) { return text } 使用外部的js <script> import {config,formatXml} from '../static/config.js' export default {

kettle转换JavaScript加载外部js文件

日常开发中,时常会出现这样一种情况.有大量的函数是通用的.而每个JavaScript里面写一遍,给维护带来很大的困扰.因而需要将公共的函数写在外部js文件中.这时就需要引入外部的公共文件了.下面是在转换里的JavaScript组件中引入外部公共js文件. //加载js文件 LoadScriptFile(getVariable("Internal.Transformation.Filename.Directory", "") +"/common_Functi

java ClassLoader机制和如何加载外部class文件(含代码)

Java类的生命周期 生命周期有:加载(Loading)-->验证(Verification)-->准备(Preparation)--->解析(Resolution)-->初始化(Initiation)--->使用(Using)---->卸载(Unloading). 其中标黄的验证--->准备--->解析被称为连接(Linking). 就代码执行而言: 1.连接阶段:不执行程序员代码 2.加载阶段:可以重写ClassLoader来执行我们的代码 3.连接后阶

背水一战 Windows 10 (11) - 资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件

[源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 资源 CustomResource ResourceDictionary 加载外部的 ResourceDictionary 文件 示例1.演示“CustomResource”相关知识点CustomResourceTest.cs /* * 本例是一个自定义 CustomXamlResourceLoader,用于演示 CustomResource 的使用 */ using Windows.UI.Xaml.Resources;

资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件

CustomResource ResourceDictionary 加载外部的 ResourceDictionary 文件 示例1.演示“CustomResource”相关知识点Resource/CustomResourceTest.cs /* * 本例是一个自定义 CustomXamlResourceLoader,用于演示 CustomResource 的使用 */ using Windows.UI.Xaml.Resources; namespace Windows10.Resource {

MFC程序加载DLL文件时运行到Loadlibray()语句就无法继续下去

我在学习Detour时,为了进行测试,就建立了一个DLL文件和一个MFC工程. 但是我的MFC程序加载DLL文件时运行到Loadlibray("XXX.dll")这条语句就无法继续下去,没有报错,VS2010也没有停止,还是处于编译运行状态. 可是我之前加载的别的DLL文件都可以运行,这应该是很简单的加载DLL文件的过程呀,就想是dll文件的代码错误?或是MFC工程错误?还是Dll工程错误? 于是 我就将dll内的代码 复制到原来可以运行的DLL文件中发现可以运行,那就是代码没错, 接

django如何加载外部文件

django如何加载外部文件(环境:pycharm python2.7 django1.11) 有一份新的文件夹名为:py_aiplat_demo,内含有多个文件夹(SDK,demo,data). 1.把文件考到项目的下面,不是app下面. 如果你想使用里面的文件夹SDK此模块,首先你必须把它变成一个包,即内含有__init__.py文件,如果没有,就新建一个,其它一样 2.下面部分分为两种方法 一. 把py_aiplat_demo整个文件夹提升为蓝色文件,pycharm里的项目中,点击该文件夹