推荐一个TabCtrl自画类,不要MFC的

hjcy_2002 2009-09-17 01:05:28
推荐一个TabCtrl自画类,不要MFC的
...全文
156 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xwsn007 2009-09-18
  • 打赏
  • 举报
回复
hjcy_2002 2009-09-18
  • 打赏
  • 举报
回复
自己顶一下
keanchen0928 2009-09-18
  • 打赏
  • 举报
回复
再顶,我最近也正要做个tabctrl.
whg01 2009-09-17
  • 打赏
  • 举报
回复
http://www.pudn.com/downloads175/sourcecode/windows/control/detail816134.html
试试这个。实在不想自己写就看看GTK+有没有,或者QT里的。
fandh 2009-09-17
  • 打赏
  • 举报
回复
不要MFC?有点难度,不知道!
wu_qing_yun 2009-09-17
  • 打赏
  • 举报
回复
3楼不要刷屏啊。 3楼那个是MFC的

很抱歉,我有绚丽的MFC写的TAB,不过帮不了你哦~~

纯顶一下
  • 打赏
  • 举报
回复
学习
eagerle01 2009-09-17
  • 打赏
  • 举报
回复
自己写的CCoolTabCtrl
class CCoolTabCtrl : public CWnd
{
public:
class CPageItem
{
friend class CCoolTabCtrl;

CWnd* m_pWnd; ///窗口,可以为NULL
UINT m_nStyle; ///窗口类型,0:普通,1:动态创建
CString m_sText; ///文字
HICON m_hIcon; ///图标
public:
CRect m_rect;
public:
void SetPageStyle(UINT nStyle)
{
m_nStyle = nStyle;
}

UINT GetAreaWidth(CDC* pDC);
void Draw(CDC* pDC, UINT nStyle, BOOL bActive);
};
DECLARE_DYNCREATE(CCoolTabCtrl)
// Construction
public:
CCoolTabCtrl();

// Attributes
public:
// Operations
public:

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCoolTabCtrl)
//}}AFX_VIRTUAL

// Implementation
public:
void SetStyleMonoSpace(BOOL bEnable = TRUE);
void SetStyleDirection(int Direction); ///Direction取值:TCS_UP,TCS_DOWN
void SetStyleAnimate(BOOL bEnable = TRUE); ///允许动画bEnable = TRUE,否则为FALSE
void UpdateWindow();
BOOL m_bEraseBkgnd;
UINT GetStyle();
void SetStyle(UINT style);
void DrawFrame(CDC* pDC);
void* GetPageItem(UINT nIndex);
void SetActivePage(int nIndex);
BOOL AddPage(CRuntimeClass* pClass, UINT nIDTemplate, LPCTSTR sText,
UINT IconID = NULL);
CPageItem* AddPage(CWnd* pWnd, LPCTSTR sText, UINT IconID = NULL);
void AutoSize();
void GetClientRect(LPRECT lpRect);
BOOL Create(UINT wStyle, const CRect& rect, CWnd* pParentWnd, UINT nID);
virtual ~CCoolTabCtrl();

// Generated message map functions
protected:
//{{AFX_MSG(CCoolTabCtrl)
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnSizing(UINT fwSide, LPRECT pRect);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg BOOL OnNotify( WPARAM wParam, LPARAM lParam, LRESULT* pResult );
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
CFont m_font;
int m_nActivePage;
UINT m_nStyle;
UINT m_nBorder;
CPtrList m_PageList;
};
eagerle01 2009-09-17
  • 打赏
  • 举报
回复
自己写的CCoolTabCtrl
class CCoolTabCtrl : public CWnd
{
public:
class CPageItem
{
friend class CCoolTabCtrl;

CWnd* m_pWnd; ///窗口,可以为NULL
UINT m_nStyle; ///窗口类型,0:普通,1:动态创建
CString m_sText; ///文字
HICON m_hIcon; ///图标
public:
CRect m_rect;
public:
void SetPageStyle(UINT nStyle)
{
m_nStyle = nStyle;
}

UINT GetAreaWidth(CDC* pDC);
void Draw(CDC* pDC, UINT nStyle, BOOL bActive);
};
DECLARE_DYNCREATE(CCoolTabCtrl)
// Construction
public:
CCoolTabCtrl();

// Attributes
public:
// Operations
public:

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCoolTabCtrl)
//}}AFX_VIRTUAL

// Implementation
public:
void SetStyleMonoSpace(BOOL bEnable = TRUE);
void SetStyleDirection(int Direction); ///Direction取值:TCS_UP,TCS_DOWN
void SetStyleAnimate(BOOL bEnable = TRUE); ///允许动画bEnable = TRUE,否则为FALSE
void UpdateWindow();
BOOL m_bEraseBkgnd;
UINT GetStyle();
void SetStyle(UINT style);
void DrawFrame(CDC* pDC);
void* GetPageItem(UINT nIndex);
void SetActivePage(int nIndex);
BOOL AddPage(CRuntimeClass* pClass, UINT nIDTemplate, LPCTSTR sText,
UINT IconID = NULL);
CPageItem* AddPage(CWnd* pWnd, LPCTSTR sText, UINT IconID = NULL);
void AutoSize();
void GetClientRect(LPRECT lpRect);
BOOL Create(UINT wStyle, const CRect& rect, CWnd* pParentWnd, UINT nID);
virtual ~CCoolTabCtrl();

// Generated message map functions
protected:
//{{AFX_MSG(CCoolTabCtrl)
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnSizing(UINT fwSide, LPRECT pRect);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg BOOL OnNotify( WPARAM wParam, LPARAM lParam, LRESULT* pResult );
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
CFont m_font;
int m_nActivePage;
UINT m_nStyle;
UINT m_nBorder;
CPtrList m_PageList;
};
eagerle01 2009-09-17
  • 打赏
  • 举报
回复
自己写的CCoolTabCtrl
class CCoolTabCtrl : public CWnd
{
public:
class CPageItem
{
friend class CCoolTabCtrl;

CWnd* m_pWnd; ///窗口,可以为NULL
UINT m_nStyle; ///窗口类型,0:普通,1:动态创建
CString m_sText; ///文字
HICON m_hIcon; ///图标
public:
CRect m_rect;
public:
void SetPageStyle(UINT nStyle)
{
m_nStyle = nStyle;
}

UINT GetAreaWidth(CDC* pDC);
void Draw(CDC* pDC, UINT nStyle, BOOL bActive);
};
DECLARE_DYNCREATE(CCoolTabCtrl)
// Construction
public:
CCoolTabCtrl();

// Attributes
public:
// Operations
public:

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCoolTabCtrl)
//}}AFX_VIRTUAL

// Implementation
public:
void SetStyleMonoSpace(BOOL bEnable = TRUE);
void SetStyleDirection(int Direction); ///Direction取值:TCS_UP,TCS_DOWN
void SetStyleAnimate(BOOL bEnable = TRUE); ///允许动画bEnable = TRUE,否则为FALSE
void UpdateWindow();
BOOL m_bEraseBkgnd;
UINT GetStyle();
void SetStyle(UINT style);
void DrawFrame(CDC* pDC);
void* GetPageItem(UINT nIndex);
void SetActivePage(int nIndex);
BOOL AddPage(CRuntimeClass* pClass, UINT nIDTemplate, LPCTSTR sText,
UINT IconID = NULL);
CPageItem* AddPage(CWnd* pWnd, LPCTSTR sText, UINT IconID = NULL);
void AutoSize();
void GetClientRect(LPRECT lpRect);
BOOL Create(UINT wStyle, const CRect& rect, CWnd* pParentWnd, UINT nID);
virtual ~CCoolTabCtrl();

// Generated message map functions
protected:
//{{AFX_MSG(CCoolTabCtrl)
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnSizing(UINT fwSide, LPRECT pRect);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg BOOL OnNotify( WPARAM wParam, LPARAM lParam, LRESULT* pResult );
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
CFont m_font;
int m_nActivePage;
UINT m_nStyle;
UINT m_nBorder;
CPtrList m_PageList;
};
jyh_baoding 2009-09-17
  • 打赏
  • 举报
回复
自己查一下WIN32编程,应该可以的!
CoderOfVC 2009-09-17
  • 打赏
  • 举报
回复
只有MFC的。。帮顶。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧