CFont * f;
   f = new CFont;
   f->CreateFont(10, // nHeight
        0, // nWidth
        0, // nEscapement
        0, // nOrientation
        FW_BOLD, // nWeight
        FALSE, // bItalic
        FALSE, // bUnderline
        0, // cStrikeOut
        ANSI_CHARSET, // nCharSet
        OUT_DEFAULT_PRECIS, // nOutPrecision
        CLIP_DEFAULT_PRECIS, // nClipPrecision
                          DEFAULT_QUALITY, // nQuality
           DEFAULT_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, DWORD


fdwCharSet, 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 NT:若想获得很多其它错误信息。请调用GetLastError函数。


备注:当一种字体不再使用时。可用DeleteObject来删除。


为保护那些提供字体给Windows和Windows NT的卖主的版权,基于Win32的应用程序总是列出所选择字体的准确名字。

因为不同的系统会使用不同的字体,不要觉得所选择字体就是要


求的字体。

比如。假设要求名叫Palatino的字体,但系统没提供那样一种字体。则字体映射器将会以一种不同名但有类似属性的字体取而代之。系统总字体名称由用户选择出的报告。


快速搜索:Windows NT:3.1以上数字。Windows:95以上数字;Windows CE:不支持。头:wingdi.h;库文件:gdi32.lib;Unicode:在Windows NT环境,Unicode和ANSI


两种方式。

CreateFont详细解释的更多相关文章

  1. .htaccess语法之RewriteCond与RewriteRule指令格式详细解释

    htaccess语法之RewriteCond与RewriteRule指令格式详细解释 (2012-11-09 18:09:08) 转载▼ 标签:  htaccess it 分类: 网络 上文htacc ...

  2. cookie的详细解释

    突然看到网页上中英文切换的效果,不明白怎么弄得查了查 查到了cookie 并且附有详细解释 就copy留作 以后温习 http://blog.csdn.net/xidor/article/detail ...

  3. tar命令的详细解释

    tar命令的详细解释 标签: linuxfileoutputbashinputshell 2010-05-04 12:11 235881人阅读 评论(12) 收藏 举报  分类: linux/unix ...

  4. Linux学习笔记15——GDB 命令详细解释【转】

    GDB 命令详细解释 Linux中包含有一个很有用的调试工具--gdb(GNU Debuger),它可以用来调试C和C++程序,功能不亚于Windows下的许多图形界面的调试工具. 和所有常用的调试工 ...

  5. C语言 - 结构体(struct)比特字段(:) 详细解释

    结构体(struct)比特字段(:) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26722511 结构体(struc ...

  6. 姿势体系结构的详细解释 -- C

    我基本上总结出以下4部分: 1.问题的足迹大小. 2.字节对齐问题. 3.特别保留位0. 4.这种结构被存储在存储器中的位置. #include <stdio.h> #include &l ...

  7. Java - 面向对象(object oriented)计划 详细解释

    面向对象(object oriented)计划 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24058107 程序包括 ...

  8. 设计模式 - 迭代模式(iterator pattern) Java 迭代器(Iterator) 详细解释

    迭代模式(iterator pattern) Java 迭代器(Iterator) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 參考迭代器模式(ite ...

  9. 设计模式 - 观察者模式(Observer Pattern) 详细解释

    观察者模式(Observer Pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26583157 版权全部 ...

随机推荐

  1. 使用PF_PACKET和SOCK_RAW发送自己定义type以太网数据包

    本文介绍使用PF_PACKET和SOCK_RAW发送自己定义type以太网数据包,使用wireshare抓包能够获取到数据包,为Linux内核添加网络协议做铺垫. 先上码: #include < ...

  2. 以太网PHY 芯片之 MII/MDIO接口详解

    本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在10/100模式下和1000M模式下的设计方法. ...

  3. EL表达式语言

    EL (Expression Language) 目的:为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法. ...

  4. HTML5 Web SQL Database 与 Indexed Database 的 CRUD 操作

    http://www.ibm.com/developerworks/cn/web/1210_jiangjj_html5db/ 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  5. 基于GruntJS前端性能优化

    在本文中,如何使用GruntJS为了使治疗简单的前端性能优化自己主动,我写了一个完整的样本放在Github上.能够參考一下.关于Yahoo的前端优化规则请參考:Best Practices for S ...

  6. DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能

    DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能 一.引言 在当前的电子商务平台中,用户下完订单之后,然后店家会在后台看到客户下的订单,然后店家可以对客户的订单进行发货操作.此时客户会在自己 ...

  7. 导入三方包,出现ClassNotFoundException

    在项目中须要引用settings模块里面的某个活动.在eclipse中导入settins.jar包之后,使用例如以下方式启动: Intent intent = new Intent(); intent ...

  8. RPC框架实现

    转载RPC框架实现 RPC(Remote Procedure Call,远程过程调用)框架是分布式服务的基石,实现RPC框架需要考虑方方面面.其对业务隐藏了底层通信过程(TCP/UDP.打包/解包.序 ...

  9. 线程同步synchronized

    一Java规划共享多个线程之间数据的能力. 当线程以异步方式訪问共享数据时.有时候是不安全的或者不和逻辑的. 比方卖火车票.同一时刻一个线程在读取数据,另外一个线程在处理数据,当处理数据的线程没有等到 ...

  10. C和指针 (pointers on C)——第一章:高速启动

    大多数人并不认为有几类人猿学校计划非常赞同C学习好,然后看多本书. 仅仅作为读书笔记写.有时还包括一些题目和答案. 这样的公开栏,这两种玉引砖敲,对于自勉,鼓励王! 第一章:手 我每次都是复习的来写. ...