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

CxStatic:一个带文本换行的CStatic控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.68/5 (14投票s)

2004 年 12 月 21 日

2分钟阅读

viewsIcon

136158

downloadIcon

7352

一个带有文本换行、颜色和透明度的 CStatic 控件。

Sample Image

引言

最近,我一直在寻找一个好的 CStatic 控件,它支持文本换行(即使使用 SS_CENTERIMAGE)、字体和颜色更改、透明度... 我查看了 Norm.Net 的 CLabel,但有点失望,因为它缺少文本换行,而且存在错误(当透明时,在文本更改后控件不会刷新)。首先,我试图找出问题所在,但最终我决定编写自己的控件。
此控件经常更新,请随时访问。

使用代码

如何将此控件添加到您的项目中

  1. 将文件 CxStatic.hCxStatic.cppMemDC.h 复制到您的项目目录,并将这些文件添加到您的项目中。
  2. 在您计划使用此类的文件中放入 #include "CxStatic.h"
  3. CStatic 定义更改为 CxStatic
  4. 使用下面描述的 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 版以来的文本对齐错误
  • 修改方法签名(CStringLPCTSTR),更符合 Unicode 标准
  • 修复了从文件加载图像时的错误

待办事项

  • 当透明时删除闪烁
  • 添加 SetRounded 以在控件周围创建一个圆角矩形
  • 添加文本滚动
  • 添加工具提示
  • 添加上下文菜单
  • 使用 CxImage 提供所有图像格式支持(在下一个版本 0.5 中提供)
  • 撰写一篇更好的文章来解释它是如何工作的
© . All rights reserved.