自绘Tab控件

自绘tab按钮效果图如下:

 

使用例子:

MyTabControl *tabControl = NULL;

tabControl = new MyTabControl();
tabControl->Create(this, CRect(0,0,125,27), L"花生", ID_BTN_MYTAB);
tabControl->SetTabIndex(index);

tabControl->SetShowText(L"花生");

tabControl->SetTabState(TAB_STATE_DOWN);

tabControl->SetToolTipText(L"花生");

头文件:

#pragma once
#include "LhsButton.h"

// MyTabControl

#define ID_BTN_MYTAB_CLOSE	2100			//关闭按钮的id
#define MYWM_BTN_TAB_CLOSE WM_USER+2001		//关闭按钮单击响应
#define MYWM_BTN_TAB_CLICK WM_USER+2002		//tab按钮单击

//tab按钮的状态
enum TabState
{
	TAB_STATE_NOR			= 0,
	TAB_STATE_DOWN			= 1,
};
class MyTabControl : public CWnd
{
	DECLARE_DYNAMIC(MyTabControl)

public:
	MyTabControl();
	virtual ~MyTabControl();

	 bool Create(CWnd* pParent,CRect rc,CString text,DWORD id = 0,DWORD style = WS_VISIBLE|WS_CHILD);  

	DECLARE_MESSAGE_MAP()

public:
	void SetShowText(CString strShowText);

protected:
	CString szClassName;  
	bool m_isMouseHover;		//鼠标是否悬浮
	bool m_isMouseClicked;		//鼠标是否单击
	CString m_strShowText;		//要显示的文字
	CString m_strTabText;		//绘制在tab按钮下的文字

	Image*						m_pImgNor;			//正常时的图片
	Image*						m_pImgHot;			//鼠标悬浮时的图片
	Image*						m_pImgDown;			//单击按下时的图片
	
	void PostClickEvent();
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);  
	afx_msg void OnMouseHover(UINT nFlags, CPoint point);  
	afx_msg void OnMouseLeave();  
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);  
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);  
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);  
	afx_msg void OnPaint();  
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg LRESULT OnBtnClose(WPARAM wParam, LPARAM lParam);
	virtual BOOL PreTranslateMessage(MSG* pMsg);
public:
	void SetTabState(TabState state){m_tabState = state; Invalidate();}	//设置tab状态
	TabState Ge
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值