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

📄 beautytabctrlex.h

📁 类似QQ的聊天软件源程序
💻 H
字号:
#ifndef AFX_BEAUTYTABCTRLEX_H__FBI_MAN__INCLUDED_
#define AFX_BEAUTYTABCTRLEX_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.
//********************************************************************
//********************************************************************

#include <deque>
using std::deque;

#define  CLASSNAME_LEFT_TAB_EX       _T("SKIN_BEAUTY_TAB_EX")   

class TTabInfo
{
public:
	TTabInfo()
	{
		m_szTip = _T("");
		m_szTab = _T("");
		m_hIcon = NULL;
		m_pWnd = NULL;
		m_iTip = -1;
	}
	virtual ~TTabInfo()
	{
		if (m_hIcon)
		{
			DeleteObject(m_hIcon);
			m_hIcon = NULL;
		}
	}
public:
	int			m_iTip;	
	CString		m_szTip;
	CString		m_szTab;
	HICON		m_hIcon;
	CWnd		*m_pWnd;
};

class  SKINBEAUTY__CLASS CBeautyTabCtrlEx : public CWnd
{
// Construction
public:
	CBeautyTabCtrlEx();
	virtual ~CBeautyTabCtrlEx();

public:
	void SetBorderColor(COLORREF clrBorder);									// 设置边框色
	void SetTabBack(COLORREF clrBack);											// 设置tab背景色
	static void LoadTabBmps(TCHAR* szNormal, TCHAR* szOver, TCHAR* szSel);	    // 加载tab图片
	BOOL CreateTab(CRect rtTab, CWnd *pParent, UINT uID);						// 建立tab控件
	BOOL AddOneTab(CWnd *pWnd, TCHAR* szTitle, HICON hIcon, TCHAR* szTip=NULL);	// 添加一个tab页面
	void GetCurTabRect(int iIndex, CRect &rtTab);								// 获取指定索引tab的矩形

protected :
	CString ASCIIToUnicode(CString szTemp);										// 从ascII到Unicode的转化
	void DrawColorTabs(CDC *pDC);												// 画颜色tab
	void DrawDownText(CDC *pDC, CRect rtText, CString szText);					// 画竖形文本
	
// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CBeautyTabCtrlEx)
	public:
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	protected:
	virtual void PreSubclassWindow();
	//}}AFX_VIRTUAL

protected:
	void SetOver(int iIndex);													// 设置over索引
	void SetCur(int i);															// 设置当前tab页面
	void DrawContent(CDC *pDC, CRect rtTab, CString szTxt, BOOL bHaveIcon = FALSE);	// 画文本
	void DrawIcon(CDC *pDC, CRect rtTab, HICON hIcon);							// 画图标
	void DrawBmp(CBitmap *pBmp, CDC *pDC, RECT rtWnd);							// 画位图
	void ChangeSize();															// 窗体变化处理函数
	void DrawTabs(CDC *pDC);													// 画所有tab
	void DrawBorder(CDC *pDC);													// 画边框
	//{{AFX_MSG(CBeautyTabCtrlEx)
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	afx_msg void OnPaint();
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
		

	static  CBitmap  *m_pTabNormal;
	static  CBitmap  *m_pTabSel;
	static  CBitmap  *m_pTabOver;
	static  COLORREF m_clrNormHigh;												// 亮色
	static  COLORREF m_clrNormLow;												// 暗色
	static  COLORREF m_clrOverHigh;
	static  COLORREF m_clrOverLow;
	static  COLORREF m_clrSelHigh;
	static  COLORREF m_clrSelLow;

private:
	deque<TTabInfo*>    m_dequeTab;		// tab 数组
	int              m_iSel;            // 当前显示Tab;
	CRect            m_rtClient;        // 客户区矩形
	int              m_iTabWidth;       // tab宽度
	int              m_iTabHeight;      // tab高度
	int              m_iOver;           // 当前鼠标移过那个Tab
	CRect            m_rtTemp;
	int              m_iIconWidth;      // 显示图标的大小
	int              m_iFontSize;		// tab字体的大小
	CFont            m_tFont;
	int              m_iStep;			// 间距
	COLORREF         m_clrBack;
	COLORREF         m_clrLine;
	BOOL             m_bUseBmp;
	CToolTipCtrl	 m_wndTip;			// 工具栏提示
};

#endif //AFX_BEAUTYTABCTRLEX_H__FBI_MAN__INCLUDED_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -