⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beautytoolbarex.h

📁 类似QQ的聊天软件源程序
💻 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 + -