用于在对话框中生成帮助文本的舒适自定义文本控件






4.11/5 (2投票s)
扩展 CStatic,使其具有图像、框架、阴影和使用自定义字体的功能
引言
在我自己的一个项目中,我一直在寻找一种对话框控件,我可以在项目的对话框中使用它来显示对话框上方的帮助文本。 由于我没有找到合适的控件,所以我自己编写了它,现在我想与社区分享。 如果你想看到该控件的实际效果,请下载演示项目。 如果你想使用该控件,请下载新类的源代码。

背景
CHelpStatic
派生自 CStatic
,并通过在左侧绘制图像、自定义字体、框架、背景色/文本颜色和阴影来扩展其外观。 如果您使用图像,则图像会自动调整大小以适应控件的大小。
您还可以定义文本和框架侧面之间的像素距离。 这使得帮助文本更易于阅读。
该控件类也可以仅用作颜色静态控件,只需设置文本颜色即可。
Using the Code
以下功能可用。 请注意,您不必使用任何这些功能,但如果使用,外观将得到扩展。
-
void SetColorBack(COLORREF rgb);
设置背景颜色。 如果不使用,则使用对话框的 windows 标准颜色 (
COLOR_3DFACE
)。 -
void SetColorText(COLORREF rgb);
设置文本的颜色。 如果不使用,则使用按钮的 windows 标准颜色 (
COLOR_BTNTEXT
)。 -
void SetFont(LPCTSTR czFace, int iSize=10);
设置所需字体的字体和大小。 如果不使用,则使用 windows 标准字体 (
DEFAULT_GUI_FONT
)。 -
void SetMargin(int iPixel);
设置您希望在框架侧面和绘图文本之间保持的像素数。 如果不使用,则不提供距离。 如果要禁用边距,请将其设置为
0
。 -
void SetText(LPCTSTR czText);
设置控件的文本。
-
void LoadPicture(int iResID);
从资源加载图像并激活在控件左侧绘制图像。 控件的文本会自动移到图像的右侧。
-
void EnableFrame(BOOL bEnable,COLORREF rgb=RGB(0,0,0));
启用或禁用在控件周围绘制框架。 如果启用框架,您还可以定义框架的颜色。
-
void EnableShadow(BOOL bEnable=TRUE);
在控件的底部和右侧启用或禁用阴影。 阴影将像您在资源中定义的那样绘制到控件的大小中。 这意味着,如果使用阴影,则整个控件的扩展与没有阴影时相同。
有关功能的详细描述,请查看源代码中有关这些功能的注释。
如何实施
- 在您的对话框中,为您想要的每个帮助文本创建一个
static
文本控件元素,并将其放置在所需的位置(例如,在对话框的顶部)。 - 将这两个文件添加到您的项目中
- HelpStatic.cpp
- HelpStatic.h
- 将 #include "HelpStatic.h" 添加到您的对话框头文件。
- 为您在对话框资源中创建的每个插入的控件声明一个
CHelpStatic
实例。示例
CHelpStatic m_help;
- 在您的
OnInitDialog()
中,为每个CHelpStatic
成员变量添加一个SubclassDlgItem()
。示例
m_help.SubclassDlgItem(IDC_STATICHELP,this);
或者,您可以使用 VS 中的向导为
static
-ctrl 添加一个成员变量。 在变量类型字段中,键入 "CHelpStatic
"。 然后,向导会在DoDataExchange()
中创建一个条目。 - 在
OnInitDialog()
中,使用上述功能中的一个或多个初始化每个帮助控件。示例
m_help.SetText(czText); m_help.SetColorBack(RGB(255,128,0)); m_help.SetColorText(RGB(0,0,255)); m_help.LoadPicture(IDB_LOVECRAFT); m_help.SetFont("Arial",10); m_help.SetMargin(5); m_help.EnableFrame(TRUE); m_help.EnableShadow();
如果您不使用任何这些功能,则控件将以默认设置显示(就像普通的 CStatic
对象一样)。
历史
- 2011 年 5 月 18 日:首次发布
- 2011 年 5 月 20 日:更新了文章