Visual Studio .NET 2002Visual C++ 7.1Visual Studio 6Visual C++ 7.0Visual Studio .NET 2003Windows 2000Visual C++ 6.0Windows XPMFC中级开发Visual StudioWindowsC++
CxStatic:一个带文本换行的CStatic控件






4.68/5 (14投票s)
2004 年 12 月 21 日
2分钟阅读

136158

7352
一个带有文本换行、颜色和透明度的 CStatic 控件。
引言
最近,我一直在寻找一个好的 CStatic
控件,它支持文本换行(即使使用 SS_CENTERIMAGE
)、字体和颜色更改、透明度... 我查看了 Norm.Net 的 CLabel,但有点失望,因为它缺少文本换行,而且存在错误(当透明时,在文本更改后控件不会刷新)。首先,我试图找出问题所在,但最终我决定编写自己的控件。
此控件经常更新,请随时访问。
使用代码
如何将此控件添加到您的项目中
- 将文件 CxStatic.h、CxStatic.cpp 和 MemDC.h 复制到您的项目目录,并将这些文件添加到您的项目中。
- 在您计划使用此类的文件中放入
#include "CxStatic.h"
。 - 将
CStatic
定义更改为CxStatic
。 - 使用下面描述的 API
void SetBkColor(COLORREF rgb, COLORREF crBkgndHigh = 0, BackFillMode mode = Normal); void SetTransparent(BOOL bTranspMode); void SetTextColor(COLORREF col); void SetFont(const CString& strFont, int nPointSize, int nWeight, BOOL bRedraw = TRUE); void SetFont(LOGFONT *pLogFont, BOOL bRedraw /*= TRUE*/); void Setfont(CFont *pFont, BOOL bRedraw /*= TRUE*/); void SetFont3D(BOOL bFont3D, Type3D type); void SetAutoAdjustFont(BOOL bAutoAdjustFont); BOOL SetBitmap(HBITMAP hBitmap, ImageSize Emode = FitControl,
COLORREF rgbTransparent = 0xFF000000);
BOOL SetBitmap(UINT nIDResource, ImageSize Emode = FitControl,
COLORREF rgbTransparent = 0xFF000000);// Loads bitmap from resource ID
BOOL SetBitmap(LPCTSTR lpszResName, ImageSize Emode = FitControl,
COLORREF rgbTransparent = 0xFF000000);// Loads bitmap from file void SetWindowText(LPCTSTR strText); void Format(LPCTSTR szFmt, ...); void AppendText(LPCTSTR szFmt, ...);
使用示例
m_staGradient.SetTextColor( WHITE ); m_staGradient.SetFont("Arial", 16, FW_NORMAL); // Choose font m_staGradient.Format("Counter = %d", nCounter); //like CString format method m_staGradient.SetBkColor( RGB(255,240,150), RGB(124,0,0), CxStatic::HGradient); // Create horizontal gradient m_staBitmap.SetBitmap(IDB_BITMAP2, CxStatic::OriginalSize);
我希望有人会觉得这个控件有用!
历史
CxStatic
v0.1
- 初始发布。
CxStatic
v0.2
- 修复了
UpdateData
错误(添加了WM_SETTEXT
处理) - 现在您可以通过以下方式修改字体:
cxstatic.SendMessage(WM_SETFONT,(WPARAM)fArial20, TRUE);
- 将方法
SetFormat(...)
重命名为Format(...)
- 更改了一些
SetFont
声明
CxStatic
v0.3
- 现在控件是自绘的
- 修复
SetBitmap
错误(见上文) - 添加非常简单的多行支持
- 添加
Setmoveable
属性,该属性允许在运行时移动和调整控件大小
CxStatic
v0.4
- 修复内存泄漏
- 为 BMP 文件添加拖放支持
- 修复了自 0.3 版以来的文本对齐错误
- 修改方法签名(
CString
到LPCTSTR
),更符合 Unicode 标准 - 修复了从文件加载图像时的错误
待办事项
- 当透明时删除闪烁
- 添加
SetRounded
以在控件周围创建一个圆角矩形 - 添加文本滚动
- 添加工具提示
- 添加上下文菜单
- 使用
CxImage
提供所有图像格式支持(在下一个版本 0.5 中提供) - 撰写一篇更好的文章来解释它是如何工作的