#pragma once #include #include class CApredTreeCtrl2 : public CTreeCtrl { public: typedef struct tagBADGE { HTREEITEM hTreeItem; COLORREF badgeBackground; COLORREF badgeForeground; int type; /* 0: ÎÞ,²»ÏÔʾ*/ int number; } BADGE; DECLARE_DYNAMIC(CApredTreeCtrl2) public: CApredTreeCtrl2(); virtual ~CApredTreeCtrl2(); public: virtual COLORREF SetBkColor(COLORREF crColor); void SetItemBadge(HTREEITEM hItem, COLORREF badgeBackground, COLORREF badgeForeground); void ShowItemBadgeNumber(HTREEITEM hItem, int number); void ShowItemBadgeDotMode(HTREEITEM hItem); void HideItemBadge(HTREEITEM hItem); private: HBRUSH GetItemBkBrush(HTREEITEM hItem); HBRUSH GetItemBtnBrush(HTREEITEM hItem); HPEN GetItemBtnPen(HTREEITEM hItem); void DrawItemButton(HTREEITEM hItem, HDC hDC, CRect* pRect); private: std::map m_badges; std::map m_items; HBRUSH m_hBrushItem[3]; COLORREF m_crItemBk[3]; COLORREF m_crItemBtn[3]; public: DECLARE_MESSAGE_MAP() afx_msg void OnNMCustomdraw(NMHDR* pNMHDR, LRESULT* pResult); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); virtual void PreSubclassWindow(); };