友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

VC语言6.0程序设计从入门到精通-第59章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




提条件,因为在用户界面程序设计中是离不开控件的使用的。  

    关于控件的创建和使用总结起来的要点如下。  

    o  传统控件的通知消息一般是通过 WM_MAND 消息发给父窗口的,Win32 控件的 

      通知消息则是通过 WM_NOTIFY 消息发送的,该消息可以附带大量信息。  

    o   由于所有的控件都是子窗口,所有的控件类都是  CWnd                     类的派生类。因此可以用 

      ShowWindow、EnableWindow 和 MoveWindow 这样的 CWnd 成员函数来控制控件。  

    o  控件的创建有自动和手工两种常用方法。  控件的自动创建是通过向对话框模板中添加 

      控件实现的。手工创建则需要构建一个控件对象并调用相应的 Create 函数。  

    o  访问控件的方法包括:通过对话框的数据交换功能来查询和设置控件;通过控件对象 

      来访问控件;利用 CWnd 类的一些用于管理控件的成员函数来访问控件。  

    虽然本章对各种控件的功能和使用方法有一个较为全面的介绍,但是读者在具体使用某 

个控件时可能还会有更多自己的功能需求,这时可以通过 Visual  C++ 的联机帮助获得更多的 

与该控件相关的帮助信息。  

      



                                                                         ·145 ·  


…………………………………………………………Page 155……………………………………………………………

               第 6 章    文本和字体类  

               第 6 章    文本和字体类  



   Windows 经常使用 GDI 进行文本和图形输出。实际上,文本和图形并没有明显的界限, 

         Windows 把文本当作一种特殊的图形来对待,即,文本被看作是按照指定的“字 

在很多时候, 

体”格式画出来的。字体用于描述字符集中每一个字母、数字和标点符号的形状及外表的特 

殊信息。  

   本章将对字体类 Cfont 及文本的输出过程进行介绍。  



6。1    基础知识介绍  



   当任何窗口被第一次建立时,它假定是使用默认的系统字体。事实上,除非另外指定, 

默认字体也就是系统字体 。使用字体的方法很简单,主要是通过 WM_GETFONT 消息或者函 

数 CreateFont()取得字体。消息 WM_GETFONT 经常被发送到窗口以确定字体的类型,该字 

体可能在它的窗口中作为默认值 。此消息返回字体句柄或者空(如果正使用系统字体)。系统 

字体的实际句柄可由调用 GetStockObject(SYSTEM_FONT)得到。  

   在绘制文本时,不仅需要考虑描绘文本在窗口中使用的颜色,还应考虑文本的背景颜色 

和文本描绘“模式 ”,表 6…1 所示为控制颜色和描绘文本模式所需的函数。  



   表 6…1                 控制颜色和模式的函数  



      函数                              描述  

 GetBkColor()   传递显示描述表时,返回 COLORREF 值指示描绘文本时使用的背景色  

 SetBkColor()   传递显示描述表和 COLORREF 值,设置绘制文本的背景颜色  

 GetTextColor()  传递显示描述表时,返回 COLORREF 值,指示绘制文本的颜色  

 SetTextColor()  传递显示描述表和 COLORREF 时,为绘制的文本设置颜色  

 GetBkMode()    传递显示描述表时,返回绘画方式,可以是 OPAQUE 或者 TRANSPARENT  

 SetBkMode()    传递显示措述表和 OPAQUE 或 TRANSPARENT 参数时设置背景文本绘制方式  



6。2    CFont 类  



6。2。1    概述  



   CFont 类封装了一个 Windows  图形设备接口(GDI )字体并提供管理字体的成员函数。 

为使用 Cfont 类,可构造一个 CFont 对象并用 CreatFont()、CreateFontIndirect()、CreatePointFont() 

或 CreatePointFontIndirect()将一个 Windows 字体附加给对象,然后用对象的成员函数操纵字 

体。使用  CreatePointFont()和  CreatePointFontIndirect()常比使用  CreateFontIndirect()更容易, 


…………………………………………………………Page 156……………………………………………………………

                                                                                      第 6 章    文本和字体类  



因为前者可自动将字体高度的单位从点转换为逻辑单位。CFont 类在 MFC 类库中的继承关系 

如图 6…1 所示。  



                                                                           



                                   图 6…1    CFont 类在 MFC 类库中的位置  



6。2。2    主要成员函数  



     CFont  类中封装了与字体集相关的成员函数,通过这些成员函数可以方便地设置文本输 

出的字体。Cfont 类中的主要成员函数如表 6…2 所示。  



      表 6…2                                Cfont 类中的成员函数  



          成员                                                     作用  

 CFont                     构造一个 CFont 对象初始化  

 CreateFontIndirect        初始化一个由 LOGFONT 结构给出其特征的 CFont  对象  

 CreateFont                初始化用指定特性定义的 CFont 对象  

 CreatePointFont           用指定高度(用 0。1 点)和字体初始化一个 CFont 对象  

 CreatePointFontIndirect   与 CreateFontIndirect 相似,但字体高度用 0。1 点定义而不用逻辑单位定义操作  

 FromHandle                当给定一个 Windows HFONT 时,返回一个指向 CFont 对象的指针  

 HFONT                     返回附加给 CFont 对象的 Windows GDI 字体句柄  

 GetLogFont                用附加给 CFont 对象的逻辑字体信息填充一个 LOGFONT  



      下面详细介绍常用的成员函数。  



      1.CFont::CreateFont()函数  



      可以调用该函数创建自定义字体,该函数声明如下:  



     BOOL CreateFont  



     (  



     int        nHeight;      



     int        nWidth;        



     int        nEscapenment;    



     int        nOrientation;    



     int        nWeight;  



     BYTE    bItalic;    



     BYTE    bUnderline;  



     BYTE    cStrikeOut;    



     BYTE    nCharset;  



     BYTE    nOutPrecision;    



     BYTE    nClipPrecision;    



     BYTE    nQuality;    



                                                                                                      ·147 ·  


…………………………………………………………Page 157……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



    BYTE    nPitchAndFamily;  



    LPCTSTR lpszFacename  



    );  



    (1)nHeight  

    以逻辑单位方式指定字体的高度,字体高度可为以下值之一:  

    o  大于 0,此时高度被转化为设备单位,与可用字体的网格高度相比较;  

    o  等于 0,此时使用合理的默认大小;  

    o  小于 0,此时高度被转化为设备单位,而绝对值与可用字体的字符高度相比较。  

    nHeight  绝对值在转化后不可超过  16  384 设备单位。在所有的高度对比中,如果字体超 

过所要求的值,则字体映像器会寻找最大的或者最小的不超过所需大小的字体。  



    (2 )nWidth  

    指定字体中字符平均宽度(用逻辑单位 )。如果为 0,设备方向比率与可用字体的数字方 

向比率相比较,找一个最近的匹配,这个最近的匹配由值的差的绝对值决定。  



    (3 )nEscapement  

    指定偏
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!