www.pudn.com > DiskInfo.tgz > FlatHeaderCtrl.h
//////////////////////////////////////////////////////////////////////////// // File: CFlatHeaderCtrl.h // Version: 1.0.0.1 // // Author: Maarten Hoeben // E-mail: hoeben@nwn.com // // Specification of the CFlatHeaderCtrl and associated classes. // // You are free to use, distribute or modify this code // as long as the header is not removed or modified. // //////////////////////////////////////////////////////////////////////////// #if !defined(AFX_FLATHEADERCTRL_H__2162BEB4_A882_11D2_B18A_B294B34D6940__INCLUDED_) #define AFX_FLATHEADERCTRL_H__2162BEB4_A882_11D2_B18A_B294B34D6940__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // FlatHeaderCtrl.h : header file // #include#include #include "MemDC.h" #define FLATHEADER_TEXT_MAX 80 ///////////////////////////////////////////////////////////////////////////// // CFlatHeaderCtrl window class CFlatHeaderCtrl; class CFHDragWnd; #define FH_PROPERTY_SPACING 1 #define FH_PROPERTY_ARROW 2 #define FH_PROPERTY_STATICBORDER 3 typedef struct _HD_ITEMEX { INT m_iMinWidth; INT m_iMaxWidth; _HD_ITEMEX() : m_iMinWidth(0), m_iMaxWidth(-1) {}; } HDITEMEX, FAR * LPHDITEMEX; class CFlatHeaderCtrl : public CHeaderCtrl { friend class CFHDragWnd; DECLARE_DYNCREATE(CFlatHeaderCtrl) // Construction public: CFlatHeaderCtrl(); // Attributes public: BOOL ModifyProperty(WPARAM wParam, LPARAM lParam); BOOL GetItemEx(INT iPos, HDITEMEX* phditemex) const; BOOL SetItemEx(INT iPos, HDITEMEX* phditemex); void SetSortColumn(INT iPos, BOOL bSortAscending); INT GetSortColumn(BOOL* pbSortAscending = NULL); // Overrides public: virtual ~CFlatHeaderCtrl(); virtual void DrawItem(LPDRAWITEMSTRUCT); virtual void DrawItem(CDC* pDC, CRect rect, HDITEM hditem, BOOL bSort, BOOL bSortAscending); // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CFlatHeaderCtrl) //}}AFX_VIRTUAL // Implementation protected: BOOL m_bNoFlicker; INT m_iSpacing; SIZE m_sizeArrow; BOOL m_bStaticBorder; INT m_iHotIndex; INT m_iHotOrder; BOOL m_bHotItemResizable; HDHITTESTINFO m_hdhtiHotItem; HDITEM m_hditemHotItem; TCHAR m_szHotItemText[FLATHEADER_TEXT_MAX]; BOOL m_bResizing; INT m_iHotDivider; COLORREF m_crHotDivider; BOOL m_bDragging; CFHDragWnd* m_pDragWnd; UINT m_nClickFlags; CPoint m_ptClickPoint; BOOL m_bSortAscending; INT m_iSortColumn; CArray m_arrayHdrItemEx; COLORREF m_cr3DHighLight; COLORREF m_cr3DShadow; COLORREF m_cr3DFace; COLORREF m_crText; void DrawCtrl(CDC* pDC); INT DrawImage(CDC* pDC, CRect rect, HDITEM hditem, BOOL bRight); INT DrawBitmap(CDC* pDC, CRect rect, HDITEM hditem, CBitmap* pBitmap, BITMAP* pBitmapInfo, BOOL bRight); INT DrawText (CDC* pDC, CRect rect, HDITEM hditem); INT DrawArrow(CDC* pDC, CRect rect, BOOL bSortAscending, BOOL bRight); // Generated message map functions protected: //{{AFX_MSG(CFlatHeaderCtrl) afx_msg LRESULT OnInsertItem(WPARAM wparam, LPARAM lparam); afx_msg LRESULT OnDeleteItem(WPARAM wparam, LPARAM lparam); afx_msg LRESULT OnSetHotDivider(WPARAM wparam, LPARAM lparam); afx_msg LRESULT OnLayout(WPARAM wparam, LPARAM lparam); afx_msg UINT OnNcHitTest(CPoint point); afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx_msg void OnPaint(); afx_msg void OnSysColorChange(); afx_msg BOOL OnEraseBkgnd(CDC* pDC); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnMouseMove(UINT nFlags, CPoint point); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// // CFHDragWnd window #define FHDRAGWND_CLASSNAME _T("MFCFHDragWnd") class CFHDragWnd : public CWnd { // Construction public: CFHDragWnd(); // Attributes public: // Operations public: // Overrrides protected: // Drawing virtual void OnDraw(CDC* pDC); // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CFHDragWnd) protected: virtual void PostNcDestroy(); //}}AFX_VIRTUAL // Implementation public: virtual ~CFHDragWnd(); virtual BOOL Create(CRect rect, CFlatHeaderCtrl* pFlatHeaderCtrl, INT iItem); protected: CFlatHeaderCtrl* m_pFlatHeaderCtrl; INT m_iItem; // Generated message map functions protected: //{{AFX_MSG(CFHDragWnd) afx_msg void OnPaint(); afx_msg BOOL OnEraseBkgnd(CDC* pDC); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_FLATHEADERCTRL_H__2162BEB4_A882_11D2_B18A_B294B34D6940__INCLUDED_)