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. CreateFont详细解释

    CFont * f;    f = new CFont;    f->CreateFont(10, // nHeight         0, // nWidth         0, // n ...

  2. Java基础知识强化99:Java 常见异常及趣味解释

    常见 Java 异常解释:(译者注:非技术角度分析.阅读有风险,理解需谨慎:) 1. java.langjava.lang软件包是java语言的核心部分,它提供了java中的基础类. java.lan ...

  3. 【转】MFC CreateFont 用法

    中国人自古就有自右至左.从上到下书写汉字的习惯.而当我们在自己所编写的应用程序中使用输出函数输出的总是自左至右的横排文字.有没有可能在我们的应用程序中实现竖写汉字的效果呢?笔者偶然发现了一种利用VC实 ...

  4. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

  5. 说说BPM数据表和日志表中几个状态字段的详细解释

    有个客户说需要根据这些字段的值作为判断条件做一些定制化需求,所以需要知道这些字段的名词解释,以及里面存储的值具体代表什么意思 我只好为你们整理奉上这些了! Open Work Sheet  0 Sav ...

  6. 【完全开源】知乎日报UWP版:项目结构说明、关键源代码解释

    目录 说明 项目结构 关键代码 演示视频 说明 上一篇博客将源码放出来了,但是并没有做过多的介绍,所以如果自己硬看可能需要花费很长的时间,尤其这些代码并不是自己写的.项目不算复杂但是也不算简单,这篇文 ...

  7. nodejs、npm、grunt——名词解释

    最近着手开发一个新项目,打算从工程化的角度整理一套自己的前端开发.发布体系. grunt这些工具,之前别人用我也用,并没有认真想过它们的前世今生,正好趁着这个机会,我来理一理目前业界比较流行这些工具的 ...

  8. HTTP各状态码解释

      状态码 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必 ...

  9. JavaScript中‘this’关键词的优雅解释

    本文转载自:众成翻译 译者:MinweiShen 链接:http://www.zcfy.cc/article/901 原文:https://rainsoft.io/gentle-explanation ...

随机推荐

  1. Float之谜

    先来看几个例子: public class Thirtyfirst1{ public static void main(String[] args){ int i = 2000000000; int ...

  2. Java使用百度云存储BCS-让你的数据下载飞起来

    作者:Vinkn 来自http://www.cnblogs.com/Vinkn/ 一.简介 云也不是一个新概念了,云到底是什么东西,你叫我说个明明白白的我也说不出来,姑且算作联网的就叫做云.国内的云服 ...

  3. php学习之基础语法

    这些语法都是在学习视频的过程中整理出来的,有些很简单的语法可能就没有整理了,只是记录了自己看来比较重要的语法内容.   1.变量使用 $ 声明 ,变量区分大小写   变量的类型:      4种标量类 ...

  4. ObjectiveC1基础代码——类和对象

    // //  main.m //  ObjectiveC1 // //  Created by scjy on 15/10/30. //  Copyright © 2015年 lizhipeng. A ...

  5. UBOOT的多支持性与可裁剪性

    UBOOT功能强大,适用于多种操作系统,多种处理器架构. 在阅读它的源码时,可以看到cpu目录有各种处理器,而board目录有各种开发板.但是,对于一个特定的实验平台,例如TQ2440开发板,它用到的 ...

  6. spring mvc ModelAndView 404的原因

    在使用ModelAndView时不要导入 import org.springframework.web.portlet.ModelAndView; 而要导入以下这个包 import org.sprin ...

  7. protocol(协议) 和 delegate(委托)也叫(代理)---辨析

    protocol和delegate完全不是一回事. 协议(protocol),(名词)要求.就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现. 委托(delegate),(动 ...

  8. 转:PHP 5.4中的traits

    原文来自于:http://www.cnblogs.com/thinksasa/archive/2013/05/16/3081247.html PHP 5.4中的traits,是新引入的特性,中文还真不 ...

  9. 关于C#匿名方法

    作者  陈嘉栋(慕容小匹夫) 阅读目录 0x00 前言 0x01 不必构造委托对象 0x02 匿名方法初探 0x03 使用匿名方法省略参数 0x04 匿名方法和闭包 0x05 匿名方法如何捕获外部变量 ...

  10. cf B Inna and Candy Boxes

    题意:输入n,然后输入n个数ai,再输入n个数bi,如果在1-ai中能找到两个数x,y,x和y可以相等,如果x+y=bi,答案加上x*y,否则减去1,让结果尽可能大,输出结果. #include &l ...