65.9K
CodeProject 正在变化。 阅读更多。
Home

CFontStatic

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.34/5 (22投票s)

2004年6月11日

CPOL

2分钟阅读

viewsIcon

135421

downloadIcon

5383

一个简单的方法来改变 CStatic 的外观。

Sample Image - CFontStatic.gif

引言

有一天,我正在寻找一种以不同字体显示文本的方法,但是我找不到任何适合我需求的的代码,所以我决定为此编写一个类。由于该类在基于对话框的应用程序编程中对我有很大帮助,因此我决定在此处发布它。

我知道这个类并不完美,因为总有可以做得更有效率的地方;但是如果您有任何意见或建议,那么非常欢迎建设性的批评。

CFontStatic: 该类

CFontStatic 类(顾名思义)派生自 CStatic,但有三个细微的差异:函数 SetFontStyleSetBackgroundSetFontStatic

SetFontStyle

void CFontStatic::SetFontStyle(DWORD dwStyle)

在大多数情况下,此函数仅间接使用。 它接受一个 DWORD 作为参数。 不同的样式类型由您可以在“样式定义”部分中找到的定义来表示。

SetBackground

void CFontStatic::SetBackground(DWORD dwBgColor)

此函数设置客户端矩形的背景颜色。 如果不使用此函数,文本的背景将是透明的。 您可以使用宏 RGB 设置颜色。 例如,RGB(255,0,255)。

SetFontStatic

void CFontStatic::SetFontStatic(CString szFont, 
             int nSize, DWORD dwColor, DWORD dwStyle)

这是类中的主要函数,用于设置字体。

  • CString szFont

    这是字体的名称。 例如,“Arial”。

  • int nSize

    这是字体的大小,以像素为单位。

  • DWORD dwColor

    文本的颜色。

  • DWORD dwStyle

    文本的样式。 有关信息,请参见“样式定义”部分。

样式定义

可以使用不同类型的样式

  • FS_BOLD
  • FS_ITALIC
  • FS_UNDERLINED
  • FS_STRIKETHROUGH
  • FS_ANTIALIAS
  • FS_CENTER
  • FS_LEFT
  • FS_RIGHT

使用 CFontStatic

步骤 1

声明一个 CStatic 的实例,并在 .h 文件中找到该声明。 将声明从 CStatic 更改为 CFontStatic。 不要忘记在您的项目中包含 FontStatic.h

第二步

让我们使用字体“Arial”,大小为 25,并将文本的颜色设置为白色。 此外,使文本倾斜、粗体和抗锯齿。

// Set the font to arial, size 25 and the color white.
// The text should be italic, bold and antialiased.
m_example.SetFontStatic("Arial",25,RGB(255,255,255), 
                       FS_ITALIC | FS_BOLD | FS_ANTIALIAS);
// Set the background of the rect to black
m_example.SetBackground(RGB(0,0,0));

或者,如果您想使用默认字体且没有背景颜色

// The text should be bold and underlined.
m_example.SetFontStyle(FS_BOLD | FS_UNDERLINED);

或者,如果您想使用字体“MS Sans Serif”,颜色为红色,并将其在矩形中居中

// The text should now be centered and red.
m_example.SetFontStatic("MS Sans Serif",12, 
                         RGB(255,0,0),FS_CENTER)

或者... 你明白了。 ;)

步骤 3

现在您可能想要更改静态控件的文本。 这可以使用 SetWindowText 函数像往常一样完成。

// Set the text in the CFontStatic
m_example.SetWindowText("Hello World!");

历史

  • 2004-06-21

    修正了一些小的拼写错误。

  • 2004-06-12

    更改了一些小错误并添加了屏幕截图的放大版本。

  • 2004-06-11

    本文已撰写。

© . All rights reserved.