#pragma once
|
#include <afxcmn.h>
|
#include <map>
|
#include <vector>
|
|
#define ID_MSG_TREE_CLICK_ITEM WM_USER+2080
|
|
class CApredTreeCtrl :
|
public CTreeCtrl
|
{
|
public:
|
typedef struct tagBADGE
|
{
|
HTREEITEM hTreeItem;
|
COLORREF badgeBackground;
|
COLORREF badgeForeground;
|
int type; /* 0: ÎÞ,²»ÏÔʾ*/
|
int number;
|
int showTime; /* ÏÔʾʱ³¤£¬0:ÓÀÔ¶*/
|
} BADGE;
|
|
DECLARE_DYNAMIC(CApredTreeCtrl)
|
|
public:
|
CApredTreeCtrl();
|
virtual ~CApredTreeCtrl();
|
|
|
public:
|
void SetItemBadge(HTREEITEM hItem, COLORREF badgeBackground, COLORREF badgeForeground);
|
void ShowItemBadgeNumber(HTREEITEM hItem, int number);
|
void ShowItemBadgeDotMode(HTREEITEM hItem, int nSecond = 0);
|
void HideItemBadge(HTREEITEM hItem);
|
void SetItemBold(HTREEITEM item);
|
void CancelItemBold(HTREEITEM item);
|
BOOL FindBoldItem(HTREEITEM item);
|
void SetItemIcon(HTREEITEM hItem, HICON hIcon);
|
|
private:
|
void DrawItemButton(HTREEITEM hItem, HDC hDC, CRect* pRect);
|
void DrawItems(HDC hDC);
|
|
private:
|
std::map<HTREEITEM, BADGE> m_badges;
|
std::map<HTREEITEM, HICON> m_icons;
|
std::vector< HTREEITEM> m_itemBolds;
|
HBRUSH m_hBrushItem[3];
|
COLORREF m_crItemBk[3];
|
COLORREF m_crText[3];
|
HBRUSH m_hBrushBtn[3];
|
HPEN m_hPenItem[3];
|
HTREEITEM m_hHoverItem;
|
BOOL m_bTracking; // ¸ú×Ù
|
|
public:
|
DECLARE_MESSAGE_MAP()
|
afx_msg void OnPaint();
|
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
|
afx_msg void OnMouseHover(UINT nFlags, CPoint point);
|
afx_msg void OnMouseLeave();
|
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
virtual void PreSubclassWindow();
|
};
|