#pragma once ///////////////////////////////////////////////////////////////////////////// enum ETabOrientation { e_tabTop=0, e_tabBottom, e_tabLeft, e_tabRight, e_tabNOF, }; ///////////////////////////////////////////////////////////////////////////// // CXPTabCtrl class CXPTabCtrl : public CTabCtrl { DECLARE_DYNAMIC(CXPTabCtrl) public: CXPTabCtrl(); virtual ~CXPTabCtrl(); void SetExtended(BOOL bTabExtended) { m_bTabExtended=bTabExtended; } void InitImageList(UINT nBitmapID); protected: afx_msg void OnPaint(); afx_msg void OnTabSelChanging(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnTabSelChanged (NMHDR* pNMHDR, LRESULT* pResult); DECLARE_MESSAGE_MAP() void DrawThemesXpTabItem(CDC* pDC, int ixItem, const CRect& rcItem, UINT uiFlag); void DrawTabItem(CDC* pDC, int ixItem, const CRect& rcItemC, UINT uiFlags); BOOL IsExtendedTabTheamedXP(); protected: ETabOrientation m_eTabOrientation; // current tab orientation CImageList m_ilTabs; // possible tab image list BOOL m_bTabExtended; // Use extended Themes functionalities int m_ixSelOld; // used to redraw deselected tab background }; ///////////////////////////////////////////////////////////////////////////// // Helper functions HRESULT DrawThemesPart(HDC hDC, int iPartId, int iStateId, LPCSTR uiPartNameID, LPRECT prcRcBx); BOOL IsThemeActiveXP(); int DWordAlign(int n); template void SwapVars(T& a,T& b) { T t=a; a=b; b=t; } /////////////////////////////////////////////////////////////////////////////