#pragma once #include #include #include #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 m_badges; std::map 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(); };