| | |
| | | #pragma once |
| | | #endif // _MSC_VER >= 1000 |
| | | |
| | | #include <functional> |
| | | |
| | | ///////////////////////////////////////////////////////////////////////////// |
| | | // CBLLabel window |
| | | enum FlashType { None, Text, Background }; |
| | |
| | | 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); // 设置超链接光标 |
| | | 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); // 设置超链接光标 |
| | | CBLLabel& DisableBorder(); // 禁用边框 |
| | | CBLLabel& SetBorderColor(COLORREF crBorder); // 设置边框颜色 |
| | | CBLLabel& SetBorderWidth(int nWidth); // 设置边框宽度 |
| | | CBLLabel& SetBorderStyle(int nStyle); // 设置边框样式 |
| | | CBLLabel& SetDefaultCursor(HCURSOR hCursor); // 设置默认光标 |
| | | CBLLabel& SetHandCursor(HCURSOR hCursor); // 设置手型光标 |
| | | CBLLabel& SetRoundedCorners(BOOL bEnable, int nRadius); // 设置圆角及半径 |
| | | CBLLabel& SetCornerRadius(int nTopLeft, int nTopRight, int nBottomRight, int nBottomLeft); // 设置各角圆角半径 |
| | | |
| | | protected: |
| | | // 工具函数 |
| | | void ReconstructFont(); // 重新构造字体 |
| | | void UpdateFontSize(); // 动态调整字体大小 |
| | | virtual void OnPaint(); // 自定义绘制文本 |
| | | void ReconstructFont(); // 重新构造字体 |
| | | void UpdateFontSize(); // 动态调整字体大小 |
| | | void CreateRoundedRegion(CRgn& rgn, const CRect& rect); // 创建圆角区域 |
| | | 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; // 是否动态调整字体大小 |
| | | 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; // 超链接光标 |
| | | HCURSOR m_hCursor; // 超链接光标 |
| | | |
| | | // 边框属性 |
| | | COLORREF m_crBorderColor; // 边框颜色 |
| | | int m_nBorderWidth; // 边框宽度 |
| | | int m_nBorderStyle; // 边框样式(使用 GDI 样式:PS_SOLID, PS_DASH 等) |
| | | |
| | | // 圆角相关属性 |
| | | BOOL m_bRoundedCorners; // 是否启用圆角 |
| | | int m_nTopLeftRadius; // 左上角圆角半径 |
| | | int m_nTopRightRadius; // 右上角圆角半径 |
| | | int m_nBottomRightRadius; // 右下角圆角半径 |
| | | int m_nBottomLeftRadius; // 左下角圆角半径 |
| | | |
| | | // 鼠标事件相关属性 |
| | | BOOL m_bMouseIn; // 鼠标是否在控件上 |
| | | HCURSOR m_hHandCursor; // 手型光标 |
| | | HCURSOR m_hDefaultCursor; // 默认光标 |
| | | 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); // 鼠标点击事件 |
| | | virtual HBRUSH CtlColor(CDC* pDC, UINT nCtlColor); // 背景和文本颜色设置 |
| | | afx_msg void OnTimer(UINT_PTR nIDEvent); // 定时器事件 |
| | | afx_msg void OnLButtonDown(UINT nFlags, CPoint point); // 鼠标点击事件 |
| | | afx_msg void OnMouseMove(UINT nFlags, CPoint point); // 鼠标移动事件 |
| | | afx_msg void OnMouseLeave(); // 鼠标离开事件 |
| | | afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); // 设置光标事件 |
| | | |
| | | DECLARE_MESSAGE_MAP() |
| | | }; |
| | | |