文章目录

  • 代码示例
  • 参数讲解
    • 函数功能
    • 函数原型:
    • 參数:

代码示例

CFont * f; f = new CFont; f->CreateFont(10, // nHeight0, // nWidth0, // nEscapement0, // nOrientationFW_BOLD, // nWeightFALSE, // bItalicFALSE, // bUnderline0, // cStrikeOutANSI_CHARSET, // nCharSetOUT_DEFAULT_PRECIS, // nOutPrecisionCLIP_DEFAULT_PRECIS, // nClipPrecisionDEFAULT_QUALITY, // nQualityDEFAULT_PITCH | FF_SWISS, // nPitchAndFamily_T("Arial")); // lpszFac

参数讲解

cHeight是字体的高度。
cWidth是字体的宽度。
cEscapement是字体的倾斜角。
cOrientation是字体的倾斜角。
cWeight是字体的粗细。
bItalic是字体是否斜体。

bUnderline是字体是否有下划线。
bStrikeOut是字体是否有删除线。

iCharSet是字体使用的字符集。
iOutPrecision是指定怎样选择合适的字体。

iClipPrecision是用来确定裁剪的精度。
iQuality是怎么样跟选择的字体相符合。
iPitchAndFamily是间距标志和属性标志。
pszFaceName是字体的名称。

函数功能

该函数创建一种有特殊性的逻辑字体。此逻辑字体能够在后面被不论什么设备选择。

函数原型:

  HFONT CreateFont(int nHeight, int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwltalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORDfdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCTSTR lpszFace)

參数:

nHeight:指定字体的字符单元或字符的逻辑单位高度。字符的高度值(也被称为em高度)是指字符单元高度值减去内部标头值。字体映射器以例如以下方式解释nHeight指定的值,各值含义为:

>0:字体映射器转换这个值以设备单位,并和已有字体的单元高度相匹配。
0:字体映射器转换在选择匹配时用一个缺省的高度值。
<0:字体映射器转换这个值到设备单位,并将它的绝对值和已有字体的字符高度相匹配。

比較全部的高度,字体映射器选择不超过要求大小的最大字体。

此映射当字体第一次被使用时发生。

对于MM_TEXT映射方式,能够用以下的公式为一种指定了点大小的字体确定高度:

nHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY),72)

nWidth:指定所要求字体的字符的逻辑单位的平均宽度。假设此值为0,字体映射器选择一个closest match值。closest match值是由比較当前设备的特征系数与可使用字体的数字化特征

系数之差的绝对值而确定的。

nEscapement:指定移位向量和设备X轴之间的一个角度。以十分之中的一个度为单位。

移位向量平行于正文行的基线。

Windows NT:当图形设备设置为GM_ADVANCED时。能够不依赖字符串的字符的定位角而指定字符串的移位角。

当图形模式被设置为GM_COMPATIBLE时,nEscapement同一时候指定移位角和定位角,能够设置nEscapement和nOrientation为同样的值。

Windows 95:nEscapement同一时候指定移位角和定位角,可设置nEscapement和nOrientation为同样的值。

nOrientation:指定每一个字符的基线和设备X轴之间的角度。

FnWeight:在0到1000之间指定字体的权值。如400表示标准体,700表示黑(粗)体。假设此值为0,则使用缺省的权值。

为方便定义,可使用例如以下值:

FW_DONTCARE:0;FW_THIN;100;FW_EXTRALIGHT;200;FW_ULTRALIGHT;200;FW_LIGHT。300;FW_NORMAL:400;FW_REGULAR;400。FW_MEDIUM。500;FW_SEMIBOLD;600;FW_DEMIBOLD;600。FW_BOLD:700;FW_EXTRABOLD。800;FW_ULTRABOLD;800;FW_HEAVY;900;FW_BLACK;900。

fdwItalic:假设设置为TRUE则指定斜体。

fdwUnderline:假设设置为TRUE,则指定加下划线的字全。

fdwStrikeOut:假设设置为TRUE,则strikeout指定字体。

fdwCharSet:指定字符集。下列值是提前定义的:

ANSI_CHARSET; BALTIC_CHARSET; CHINESEBIG5_CHARSET; DEFAULT_CHARSET;

EASTEUROPE_CHARSET; GB2312_CHARSET; GREEK_CHARSET; HANGUL_CHARSET; MAC_CHARSET; OEM_CHARSET; RUSSIAN_CHARSET; SHIFTJIS_CHARSET;

SYMBOL_CHARSET; TURKISH_CHARSET。

韩国Windows:JOHAB_CHARSET;

中东地区Windows:HEBREW_CHARSSET; ARABIC_CHARSET

泰国Windows:THAI_CHARSET

OEM_CHARSET指定的字符集与操作系统有关。

能够使用DEFAULT_CHARSET值来同意字体的名字和大小来充分描写叙述逻辑字体。

假设指定的字体名不存在,不论什么字符集的字体都能够替代指定的字体。所以应该小心地用

DEFAULT_CHARSET来避免不期望的结果出现。

操作系统中存在其它字符集的字体。假设一个应用程序用一种未知字符集的字体,则应用程序不会试图去翻译或解释用那种字体写出来的字符串。

在字体映射过程中此參数非常重要。为确保获得一致的结果。指定一个特殊的字符集。

假设在lpszFace參数中指定了一个字体名。确定fdwCharSet值与由lpszFace指定的字体字符集是否匹

配。

fdwOutputPrecision:指定输出精度,输出精度义输出与要求的字体高度、宽度、字符定位、移位、字符间距和字符类型的匹配程序。它可取下列值之中的一个:

OUT_CHARACTER_PRECIS。未用。OUT_DEFAULT_PRECIS:指定缺省的字体映射器状态。OUT_DEVICE_PRECIS:指示字体映射器在当系统里有多种字体使用同一个字体使用同一个名字时选择一种设备字体。OUT_OUTLINE_PRCIS:在Windows NT中此值指示字体映射器从TrueType和其它基于边框的字体中选择。OUT_RASTER_PRECIS:指示字体映射器在当系统里有多种字体使用同一个名字时选择一种光栅字体。OUT_STRING_PRECIS:此值没有被字全映射器使用。可是当扫描字体被列举时作为返回值。OUT_STROKE_PRECIS:在Windows NT中此值没有被字体映射器使用。可是当TrueType字体、其它基于边框的字体和向量字体被列举时,作为返回值。Windows 95:此值没有被字体映射器使用。可是当TrueType字体或向量字体被列举时,作为返回值。OUT_TT_ONLY_PRECIS:指示字体映射器仅从TrueType字体中选择,假设系统中没有安装TrueType字体,则字体映射返回缺省状态。、OUT_TT_PRECIS:指示字体映射器在当系统里有多种同名的字体时选择一种TrueType字体。当操作系统含有多种与指定名字同名的字体时。应用程序能够使用OUT_DEVICE_PRECIS,OUT_RASTER_PRECIS和OUT_TT_PRECIS值来控制字体映射器怎样选择一种字体,比如。

假设操作系统含有名字Symbol的光栅和TrueType两种字体,指定OUT_TT_PRECIS使字体映射器选择TrueType方式。

指定OUT_TT_ONLY_PRECIS使字体映射器选择一种TrueType字体。

虽然这会给TrueType字体换一个名字。

fdwClipPrecision;指定裁剪精度。裁剪精度定义怎样裁剪部分超出裁剪区的字符。它可取一个或多个下列值:CLIP_DEFAULT_PRECIS:指定缺省裁剪状态。CLIP_CHARACTER_PRECIS:未用。CLIP_STROKE_PRECIS:未被字体映射器使用。可是当光栅字体、向量字体或TrueType字体被列举时作为返回值。在Windows环境下。为保证兼容性,当列举字体时这个值总被返回。CLIP_MASK:未用。CLIP_EMBEDDED:要使用嵌入式仅仅读字体必须使用此标志。CLIP_LH_ANGLES:当此值被使用时。全部字体的旋转依赖于坐标系统的定位是朝左的还是朝右的。假设未使用此值,设备字体总是逆时针方向旋转。但其它字体的旋转依赖于坐标系统的定向。要得到很多其它关于坐标系统定向的信息。參见參数orientation。CLIP_TT_ALWAYS:未用。fdwQuality:指向输出质量。输出质量定义GDI怎样细致地将逻辑字体属性与实际物理字体属性相匹配。它可取下列值之中的一个:DEFAULT_QUALITY:字体的外观不重要。DRAFT_QUALITY:字体外观的重要性次于使用PROOF_QUALITY时。对GDI光栅字体。缩放比例是活动的,这意味着多种字体大小可供选择,但质量可能不高,假设有必要。粗体、斜体、下划线、strikeout字体可被综合起来使用。PROOF_QUALITY:字符质量比精确匹配逻辑字体字体属性更重要。对GDI扫描字体,缩放比例是活动的。并选择最接近的大小。虽然当使用PROOF_QUALITY时,选择字体大小并不完全匹配。但字体的质量非常高,并没有外观上的变形。假设有必要,粗体、斜体、下划线、strikeout字体可被综合起来使用。fdwPitchAndFamily:指定字体间距和字体族,低端二位指定字体的字符间距,它可取下列值之中的一个:DEFAULT_PITCH;FIXED_PITCH; VARIABLE_PITCH高端四位指定字体族,可取下列值之中的一个:FF_DECORATIVE:新鲜的字体。如老式英语(Old English)。FF_DONTCARE:不关心或不知道。FF_MDERN:笔划宽度固定的字体,有或者无衬线。如Pica、Elite和Courier New。FF_ROMAN:笔划宽度变动的字体,有衬线。如MS Serif。FF_SCRIPT:设计成看上去象手写体的字体。如Script和Cursive。FF_SWISS:笔划宽度变动的字体,无斜线。如MS Sans Serif。应用程序能够用运算符OR将字符间距和字体族组合起来给fdwPitchAndFamily赋值。字体族描写叙述一种字体的普通外观,当全部的精确字样都不能使用时,可用它们来指定字体。lpszface:指向指定字体的字样名的、以/0结束的字符串指针,字符串的长度不能超过32个字符(包含字符/0)。函数EnumFontFamilies可用来列举全部当前可用字体的字样名。假设lpszFace为NULL或指向一个空串,GDI使用能匹配其它属性的第一种字体。返回值:假设函数调用成功,返回值是一种逻辑字体句柄。假设函数调用失败,返回值为NULL。

Windows程序设计——CreateFont详细解释相关推荐

  1. python鸭制作类代码_详细解释ducktyping鸭子类型程序设计与Python的实现

    在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格.在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定. 这个概念的名字来源 ...

  2. 《Windows 程序设计(第3版)》——6.7 【实例】窗口查看器

    本节书摘来自异步社区<Windows 程序设计(第3版)>一书中的第6章,第6.7节,作者:王艳平 , 张铮著,更多章节内容可以访问云栖社区"异步社区"公众号查看 6. ...

  3. wi ndows ap i,windows程序设计第二章Unicode简介.doc

    windows程序设计第二章Unicode简介.doc Unico?de简介 在第一章中,我已经预告?,C语言中在?Micro?soft Windo?ws程序设?计中扮演着?重要角色的?任何部分都?会 ...

  4. Windows程序设计入门教程[来自邪恶八进制信息安全团队(www.eviloctal.com)]

    Windows程序设计入门教程 前骤: 1.第一个windows程序: 先讲几个专有名词:HINSTANCE 由handle(句柄)和instance(实例) 句柄,类似于C中的指针,指向资源,是资源 ...

  5. Windows 程序设计 笔记

    Windows 程序设计 笔记 知识点 双字节字符集和Unicode字符集有何区别?采用双字节字符集有何问题 双字节字符集(DBCS)编码是0-255,DBCS含有1字节代码与2字节代码,而Unico ...

  6. 侯捷:搞Windows程序设计我们需要啥

    侯捷:搞Windows程序设计我们需要啥 如果你是一位资深的Windows程序员,相信你对Jeffrey Richter一定不会陌生,是不是有些崇拜和景仰?如果你是一位刚涉足这个领域的Windows程 ...

  7. createprocess重启程序_C++_VC程序设计中CreateProcess用法注意事项,对于windows程序设计来说,启动 - phpStudy...

    VC程序设计中CreateProcess用法注意事项 对于windows程序设计来说,启动一个进程有三种方法:WinExec,ShellExecute,CreateProcess.这里仅对Create ...

  8. Spring中IOC和AOP的详细解释(转)

    原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...

  9. tar.gz 和 tar.bz2 详细解释

    原文请见 tar.gz 和tar.bz2 详细解释. 大多以 tar.gz 和 tar.bz2 打包软件,大多是通过 ./configure make make install 来安装的:有的软件是直 ...

最新文章

  1. 『Python基础-11』集合 (set)
  2. spring中的bean创建
  3. Mybatis中传参包There is no getter for property named XXX in class java.lang.String
  4. httpd四之CGI、HTTPS、压缩配置
  5. hibernate(nested transactions not supported)异常
  6. 保存div与页面滚动条的位置
  7. string---substr
  8. 机器学习 神经网络 神经元_神经网络如何学习?
  9. qq群机器人宠物系统java_QQ群机器人——宠物游戏
  10. 关于图书管理系统项目的大概思路
  11. 这可能是最全的反爬虫及应对方案,再也不怕爬不到数据了
  12. java 遍历所有文件夹名_Java遍历文件夹下所有文件并重新命名
  13. 天九共享全方位孵化增添活力 助力独角兽企业开辟更多新大陆
  14. user_agent浏览器头部
  15. 什么是Web前端工程师?为什么Web前端工资如此之高呢?
  16. 还停留在图片识别?谷歌已经开始研究视频识别了
  17. 360校招 求立方体表面积
  18. 神的战争god无法显示服务器,神的战争GOD
  19. 电子设计PCB-Altium笔记
  20. 重磅官宣|数说故事联合GDMS高燃开启D3智能营销峰会

热门文章

  1. scrapy框架爬取建设行业数据实例(思路整理)
  2. 2021年起重机械指挥免费试题及起重机械指挥复审考试
  3. 用银行营销数据学习数据挖掘:探索预测客户购买行为的模型
  4. 好玩的计算机操作,windows10系统功能详解,各种有趣好玩的功能,你是否了解
  5. CAD制图,机械CAD,建筑CAD,电力CAD,CAD设计, CAD标注, 打印, 软件开发 ,VC++源代码,VB 控件源程序...
  6. GRASP模式学习心得
  7. java版 pdf转换_Java 转换 PDF 版本
  8. 磁盘格式MBR和GPT
  9. 第五人格服务器维护需要多长时间,第五人格:一场游戏多长时间最合理?了解它你就明白为何频频调整...
  10. 大芬村油画师工作的三阶段:迷茫、模仿、原创