WTL字体类

2016-01-29 12:06 21 1 收藏

WTL字体类,WTL字体类

【 tulaoshi.com - C语言心得技巧 】

WTL字体类


翻译/南京中萃食品有限公司(210061) 肖进
原作/Robert Edward Caldecott

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

来源:www.codeproject.com

下载源代码
 

前言
  使用这个类可以很容易在窗口或对话框中加入各种额外的字体。我们可以通过CWindowFont类建立一个基于当前窗口的新字体。你所要做的就是设置字体属性(加重、斜体等),来美化你的程序。例如,在程序中一个使用加重字体的静态控件。
在WTL对话框中使用该类,只需简单地进行如下操作。首先加入头文件:

#include "windowfont.h"      
然后,为每一个待创建的字体加入一个CWindowsFont成员变量。
...CWindowFont m_fontBold;            
然后,在对话框中的OnInitDialog函数中, 直接在对话框中的控件上应用新字体风格。
// 建立字体,应用在静态控件 IDC_TEXT 上m_fontBold.Apply(m_hWnd, CWindowFont::typeBold, IDC_TEXT);            
调用Create函数创建字体,调用控件的SetFont函数。
//建立加重字体if (m_fontBold.Create(m_hWnd, CWindowFont::typeBold))    GetDlgItem(IDC_TEXT).SetFont(m_fontBold);            
非常简单!通常,我在每个程序的关于框内使用这个类去显示程序的版本信息。如图一所示。另外我还常在向导首页上使用该类来建立两倍高度的字体,以美化窗口外观。


图一

说明

类中字体可以设置为以下风格 ,也可以对它们进行或操作:
      加重Bold (CWindowFont::typeBold)      斜体Italic (CWindowFont::typeItalic)      下划线 (CWindowFont::typeUnderline)      两倍高度 (CWindowFont::typeDoubleHeight)
CWindowFont部分源码

CWindowFont类的部分源码如下所示:
#pragma once#include // LOGFONT 结构的包裹类class CLogFont : public LOGFONT{public:    CLogFont()    {        memset(this, 0, sizeof(LOGFONT));            }};// 建立基于指定窗口的字体class CWindowFont : public CFont  {public:    //字体风格    typedef enum tagEType    {        typeNormal       = 0x00,        typeBold         = 0x01,        typeItalic       = 0x02,        typeUnderline    = 0x04,        typeDoubleHeight = 0x08,    } EType;public:    CWindowFont() : CFont()    {    }        /// hWnd  -窗口句柄    /// nType - 字体风格    CWindowFont(HWND hWnd, int nType)    {        // HWND不能为NULL        ATLASSERT(hWnd != NULL);        //创建字体        Create(hWnd, nType);    }        virtual ~CWindowFont()    {    }public:    //创建字体    // hWnd  -窗口句柄    // nType -字体风格    //成功则返回TRUE    bool Create(HWND hWnd, int nType)    {        // 窗口句柄不能为NULL        ATLASSERT(hWnd != NULL);        ATLASSERT(::IsWindow(hWnd) != FALSE);        // 获得当前窗口的字体        HFONT hFont = (HFONT)::SendMessage(hWnd, WM_GETFONT, 0, 0);        // 是否获得当前字体成功?        if (hFont == NULL)            return false;                CLogFont lf;                // 填充 LOGFONT结构        if (::GetObject(hFont, sizeof(lf), &lf) == 0)            return false;        // 分离LOGFONT成员变量        if (nType & typeBold)            lf.lfWeight = FW_BOLD;        if (nType & typeItalic)            lf.lfItalic = TRUE;        if (nType & typeUnderline)            lf.lfUnderline = TRUE;        if (nType & typeDoubleHeight)            lf.lfHeight *= 2;                // 建立新字体        return CreateFontIndirect(&lf) ? true : false;    }        //建立新字体并应用到控件上去    bool Apply(HWND hWnd, int nType, UINT nControlID)    {        // 先建立字体        if (!Create(hWnd, nType))            return false;        // 应用到控件上        CWindow wndControl = ::GetDlgItem(hWnd, nControlID);        ATLASSERT(wndControl != NULL);        wndControl.SetFont(m_hFont);        return true;    }};
                        

来源:http://www.tulaoshi.com/n/20160129/1484641.html

延伸阅读
字体大师怎么搜索字体   1)打开,点击左上角的三道杠进入菜单栏。   2)在菜单栏里找到的按钮点击它,然后就可以在输入框里输入想要的字体再点击去搜索啦。  
字体管家怎么添加字体时钟   1)打开字体管家,点击,然后点击。   2)可以更换时钟颜色,也可以变换时钟的字体样式,设置好后就可以点击啦、  
标签: 电脑入门
特别是网页设计、美工人员等在设计时,常需要用到一些其他的字体,单靠系统默认自带的字体是不够的,就需要借助网上复制安装字体到计算机里面。这篇文章就介绍如何把网上下载到的字体安装到自己的电脑上。有几种方法可以实现字体的安装。 第一种方法: 若是字体文件可直接复制到windowsfonts目录下,也可以在windowsfonts中,点击菜单栏中...
标签: Web开发
XMD类,非常好用。 先准备下一个qq.xml(我教学用到的1个例子) QQ  我的好友  sonygod  主要资料 帐号="54022626" 昵称="rockVsTone" 备注="sonygod" 年龄="25" 性别="男" 国家地区="中华人民共和国" 州省="广东省" 城市="广州" 个性签名="五一,远方的人你是否归来?"/  详细资料 生肖="狗" 职业="计算机业" 星座=...
标签: PS PS教程
本文由中国合作伙伴印象特别供稿,转载必须取得 授权 水晶字 效果如下 800)this.width=800;" border=0> 800)this.width=800;" border=0>现在我说下制作步骤 步骤1 新建个文件,大小:500px * 500px 背景:白色  输入一个汉字"海" 大小 400px 颜色:墨绿 按ctrl点选层菜单,选区"海"字轮廓 效果如下 ...

经验教程

247

收藏

69
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部