📄 beautytoolbarex.h
字号:
#ifndef _AFX_BEAUTYTOOLBAREX_H__FBI_MAN__INCLUDED_
#define _AFX_BEAUTYTOOLBAREX_H__FBI_MAN__INCLUDED_
#ifdef SKINBEAUTY_LIB_EXPORT
#define SKINBEAUTY__CLASS __declspec(dllexport)
#else
#define SKINBEAUTY__CLASS __declspec(dllimport)
#endif
//********************************************************************
//*****************************NOTICE*********************************
//the extend-class is bad-designed, with bad-mechanism,
//without any tested. it's just for a demo only,
//and the extend-class just in demo/test-Debug-version,
//if you(client) want, we could send you the source.
//********************************************************************
//********************************************************************
#define CLASSNAME_BEAUTYTOOLBAREX _T("SKIN_BEAUTY_TOOLBAR_EX")
#include <vector>
using std::vector;
// 每个按钮的信息
class TButtonInfo
{
public:
TButtonInfo(): m_szText(_T("")), m_uID(0),
m_uImage(-1), m_bIsChecked(FALSE), m_bEnabled(TRUE), m_bLine(FALSE){}
virtual ~TButtonInfo(){}
public:
CString m_szText; // 按钮上的文本
UINT m_uID; // 按钮对应的命令ID
int m_uImage; // 按钮对应的图标索引 -1, 表示没有图标
BOOL m_bIsChecked; // 按钮是否显示按下状态
BOOL m_bEnabled; // 按钮是否是可用状态
BOOL m_bLine; // 是否是分割线
int m_nTextLen; //记录文本的char*形态长度
};
class SKINBEAUTY__CLASS CBeautyToolBarEx : public CWnd
{
// Construction
public:
CBeautyToolBarEx();
virtual ~CBeautyToolBarEx();
protected:
//{{AFX_MSG(CBeautyToolBarExImp)
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
//}}AFX_MSG
afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
public:
void SetTransparent(BOOL bTrans);
void SetBorderColor(COLORREF clrBorder); // 设置边框色
void AddOneLine(); // 加一个分割线
void SetMsgParent(CWnd *pParent); // 设置消息处理窗口
virtual BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT &rect,
CWnd *pParentWnd, UINT uID); // 创建
void SetBackColor(COLORREF clrBack); // 设置背景色
void SetLineColor(COLORREF clrTop, COLORREF clrBottom); // 设置边框色
void SetTextAlign(UINT uAlgin); // 设置对齐方式
void SetImageList(int iHeight, CImageList *pImage); // 设置图像列表
void AddOneButton(UINT uID, char* szText, int iImage=-1); // 添加一个按钮
bool EnableButton(UINT uID, BOOL bEnable); // 设置制定ID的灰化状态
protected:
void DrawOneLine(CDC *pDC, int iIndex); // 画分割线
BOOL RegisterWindowClass(); // 注册窗口类
void SetDown(int iDown); // 设置当前鼠标按下的工具栏按钮
void SetOver(int iOver); // 设置当前鼠标经过的工具栏按钮
void ChangeSize(); // 窗体变化处理函数
void GetIndexRect(int iIndex, CRect &rtRect); // 获取指定按钮的矩形
void Draw(CDC *pDC); // 画工具栏
void DrawBorder(CDC *pDC); // 画工具栏边框
void DrawBack(CDC *pDC); // 画工具栏背景
void DrawTools(CDC *pDC); // 画工具栏按钮
void DrawOneTool(CDC *pDC, int iIndex); // 画一个指定的按钮
private:
void DrawOneToolNormal(CDC *pDC, int iIndex); // 画一个正常状态下的按钮
void DrawOneToolDisable(CDC *pDC, int iIndex); // 画一个灰化状态下的按钮
void DrawOneToolChecked(CDC *pDC, int iIndex); // 画一个被选中的按钮
COLORREF m_clrBack; // 背景色
COLORREF m_clrTopLine; // 左上线的颜色
COLORREF m_clrBottomLine; // 右下线的颜色
int m_uDown; // 当前按下的按钮索引
int m_uOver; // 当前鼠标经过的按钮索引
CRect m_rtClient; // 客户区矩形
vector<TButtonInfo *> m_vecButtons; // 按钮列表
BOOL m_bIsTransparent; // 背景透明
UINT m_uIconHeight; // 图标高度
UINT m_uFontWidth; // 字体宽度
CImageList *m_pImageList; // 图像列表
CFont m_tFont; // 工具栏文本字体
BOOL m_bHaveBorder; // 是否现实边框
CWnd *m_pMsgParent; // 消息处理窗口
COLORREF m_clrBorder; // 窗体边框色
BOOL m_bTracking; // 在鼠标按下没有释放时该值为true
};
#endif // _AFX_BEAUTYTOOLBAREX_H__FBI_MAN__INCLUDED_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -