#if !defined(AFX_BLLABEL_H__A4EABEC5_2E8C_11D1_B79F_00805F9ECE10__INCLUDED_)
|
#define AFX_BLLABEL_H__A4EABEC5_2E8C_11D1_B79F_00805F9ECE10__INCLUDED_
|
|
#if _MSC_VER >= 1000
|
#pragma once
|
#endif // _MSC_VER >= 1000
|
|
#include <functional>
|
|
/////////////////////////////////////////////////////////////////////////////
|
// CBLLabel window
|
enum FlashType { None, Text, Background };
|
enum TextAlign { AlignLeft, AlignCenter, AlignRight };
|
|
class AFX_EXT_CLASS CBLLabel : public CStatic
|
{
|
DECLARE_DYNCREATE(CBLLabel) // 支持动态创建
|
|
public:
|
// 构造与析构
|
CBLLabel();
|
virtual ~CBLLabel();
|
|
void SetClickCallback(std::function<void()> callback); // 设置点击事件的回调函数
|
|
// 属性设置接口
|
CBLLabel& SetBkColor(COLORREF crBkgnd); // 设置背景颜色
|
CBLLabel& SetTextColor(COLORREF crText); // 设置文本颜色
|
CBLLabel& SetText(const CString& strText); // 设置文本内容
|
CBLLabel& SetFontBold(BOOL bBold); // 设置字体加粗
|
CBLLabel& SetFontName(const CString& strFont); // 设置字体名称
|
CBLLabel& SetFontUnderline(BOOL bSet); // 设置下划线
|
CBLLabel& SetFontItalic(BOOL bSet); // 设置斜体
|
CBLLabel& SetFontSize(int nSize); // 设置字体大小
|
CBLLabel& SetAlignment(TextAlign alignment); // 设置文本对齐方式
|
CBLLabel& SetDynamicFont(BOOL bDynamic); // 设置是否动态调整字体
|
CBLLabel& FlashText(BOOL bActivate); // 闪烁文本
|
CBLLabel& FlashBackground(BOOL bActivate); // 闪烁背景
|
CBLLabel& SetLink(BOOL bLink); // 设置是否启用超链接
|
CBLLabel& SetLinkCursor(HCURSOR hCursor); // 设置超链接光标
|
|
protected:
|
// 工具函数
|
void ReconstructFont(); // 重新构造字体
|
void UpdateFontSize(); // 动态调整字体大小
|
virtual void OnPaint(); // 自定义绘制文本
|
|
// 属性
|
COLORREF m_crText; // 文本颜色
|
COLORREF m_crBkColor; // 背景颜色
|
HBRUSH m_hBrush; // 背景画刷
|
LOGFONT m_lf; // 字体信息
|
CFont m_font; // 字体对象
|
CString m_strText; // 文本内容
|
BOOL m_bState; // 状态,用于闪烁
|
BOOL m_bTimer; // 定时器状态
|
BOOL m_bLink; // 是否为超链接
|
BOOL m_bDynamicFont; // 是否动态调整字体大小
|
TextAlign m_alignment; // 文本对齐方式
|
FlashType m_Type; // 闪烁类型
|
HCURSOR m_hCursor; // 超链接光标
|
std::function<void()> m_clickCallback; // 点击事件的回调函数
|
|
protected:
|
// MFC 消息映射
|
virtual HBRUSH CtlColor(CDC* pDC, UINT nCtlColor); // 背景和文本颜色设置
|
afx_msg void OnTimer(UINT_PTR nIDEvent); // 定时器事件
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point); // 鼠标点击事件
|
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); // 设置光标事件
|
|
DECLARE_MESSAGE_MAP()
|
};
|
|
#endif // !defined(AFX_BLLABEL_H__A4EABEC5_2E8C_11D1_B79F_00805F9ECE10__INCLUDED_)
|