分类: C/C++
2008-08-07 17:37:24
#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部分源码
#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; } };下载本文示例代码