source: trunk/EraserUI/FlatHeaderCtrl.h @ 59

Revision 59, 5.5 KB checked in by lowjoel, 7 years ago (diff)

Moved all the SHARED source files to the Shared project to further cut compile times.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
Line 
1////////////////////////////////////////////////////////////////////////////
2//  File:       CFlatHeaderCtrl.h
3//  Version:    1.1.0.0
4//
5//  Author:     Maarten Hoeben
6//  E-mail:     hoeben@nwn.com
7//
8//  Specification of the CFlatHeaderCtrl and associated classes.
9//
10//  You are free to use, distribute or modify this code
11//  as long as the header is not removed or modified.
12//
13////////////////////////////////////////////////////////////////////////////
14
15#if !defined(AFX_FLATHEADERCTRL_H__2162BEB4_A882_11D2_B18A_B294B34D6940__INCLUDED_)
16#define AFX_FLATHEADERCTRL_H__2162BEB4_A882_11D2_B18A_B294B34D6940__INCLUDED_
17
18#if _MSC_VER > 1000
19#pragma once
20#endif // _MSC_VER > 1000
21// FlatHeaderCtrl.h : header file
22//
23#ifdef DMARS
24#define HDITEM HD_ITEM
25#define HDHITTESTINFO  _HD_HITTESTINFO
26#endif
27#include <afxtempl.h>
28#include <tchar.h>
29
30#include "MemDC.h"
31
32#define FLATHEADER_TEXT_MAX 80
33
34/////////////////////////////////////////////////////////////////////////////
35// CFlatHeaderCtrl window
36
37class CFlatHeaderCtrl;
38class CFHDragWnd;
39
40#define FH_PROPERTY_SPACING         1
41#define FH_PROPERTY_ARROW           2
42#define FH_PROPERTY_STATICBORDER    3
43
44typedef struct _HD_ITEMEX
45{
46    _HD_ITEMEX() :
47        m_iMinWidth(0),
48        m_iMaxWidth(-1)
49    {}
50
51    INT     m_iMinWidth;
52    INT     m_iMaxWidth;
53
54} HDITEMEX, FAR * LPHDITEMEX;
55
56class CFlatHeaderCtrl : public CHeaderCtrl
57{
58    friend class CFHDragWnd;
59
60    DECLARE_DYNCREATE(CFlatHeaderCtrl)
61
62// Construction
63public:
64    CFlatHeaderCtrl();
65
66// Attributes
67public:
68    BOOL    ModifyProperty(WPARAM wParam, LPARAM lParam);
69
70    BOOL    GetItemEx(INT iPos, HDITEMEX* phditemex) const;
71    BOOL    SetItemEx(INT iPos, HDITEMEX* phditemex);
72
73    void    SetSortColumn(INT iPos, BOOL bSortAscending);
74    INT     GetSortColumn(BOOL* pbSortAscending = NULL);
75
76// Overrides
77public:
78    virtual ~CFlatHeaderCtrl();
79
80    virtual void DrawItem(LPDRAWITEMSTRUCT);
81    virtual void DrawItem(CDC* pDC, CRect rect, HDITEM hditem, BOOL bSort, BOOL bSortAscending);
82
83    // ClassWizard generated virtual function overrides
84    //{{AFX_VIRTUAL(CFlatHeaderCtrl)
85    //}}AFX_VIRTUAL
86
87// Implementation
88protected:
89    //BOOL          m_bNoFlicker;
90    INT             m_iSpacing;
91    SIZE            m_sizeArrow;
92    BOOL            m_bStaticBorder;
93
94    INT             m_iHotIndex;
95    INT             m_iHotOrder;
96    BOOL            m_bHotItemResizable;
97    HDHITTESTINFO   m_hdhtiHotItem;
98    HDITEM          m_hditemHotItem;
99    TCHAR           m_szHotItemText[FLATHEADER_TEXT_MAX];
100
101    BOOL            m_bResizing;
102
103    INT             m_iHotDivider;
104    COLORREF        m_crHotDivider;
105
106    BOOL            m_bDragging;
107    CFHDragWnd      *m_pDragWnd;
108
109    UINT            m_nClickFlags;
110    CPoint          m_ptClickPoint;
111
112    BOOL            m_bSortAscending;
113    INT             m_iSortColumn;
114    CArray<HDITEMEX, HDITEMEX> m_arrayHdrItemEx;
115
116    COLORREF        m_cr3DHighLight;
117    COLORREF        m_cr3DShadow;
118    COLORREF        m_cr3DFace;
119    COLORREF        m_crText;
120
121    void            DrawCtrl(CDC* pDC);
122    INT             DrawImage(CDC* pDC, CRect rect, HDITEM hditem, BOOL bRight);
123    INT             DrawBitmap(CDC* pDC, CRect rect, HDITEM hditem, CBitmap* pBitmap,
124                               BITMAP* pBitmapInfo, BOOL bRight);
125    INT             DrawText (CDC* pDC, CRect rect, HDITEM hditem);
126    INT             DrawArrow(CDC* pDC, CRect rect, BOOL bSortAscending, BOOL bRight);
127
128// Generated message map functions
129protected:
130    //{{AFX_MSG(CFlatHeaderCtrl)
131    afx_msg LRESULT OnInsertItem(WPARAM wparam, LPARAM lparam);
132    afx_msg LRESULT OnDeleteItem(WPARAM wparam, LPARAM lparam);
133    afx_msg LRESULT OnSetHotDivider(WPARAM wparam, LPARAM lparam);
134    afx_msg LRESULT OnLayout(WPARAM wparam, LPARAM lparam);
135#if _MFC_VER <= 0x800
136    afx_msg UINT OnNcHitTest(CPoint point);
137#else
138    afx_msg LRESULT OnNcHitTest(CPoint point);
139#endif
140    afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
141    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
142    afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
143    afx_msg void OnPaint();
144    afx_msg void OnSysColorChange();
145    afx_msg BOOL OnEraseBkgnd(CDC* pDC);
146    afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
147    afx_msg void OnMouseMove(UINT nFlags, CPoint point);
148    //}}AFX_MSG
149
150    DECLARE_MESSAGE_MAP()
151};
152
153/////////////////////////////////////////////////////////////////////////////
154// CFHDragWnd window
155
156#define FHDRAGWND_CLASSNAME _T("MFCFHDragWnd")
157
158class CFHDragWnd : public CWnd
159{
160// Construction
161public:
162    CFHDragWnd();
163
164// Attributes
165public:
166
167// Operations
168public:
169
170// Overrrides
171protected:
172    // Drawing
173    virtual void OnDraw(CDC* pDC);
174
175    // ClassWizard generated virtual function overrides
176    //{{AFX_VIRTUAL(CFHDragWnd)
177    protected:
178    virtual void PostNcDestroy();
179    //}}AFX_VIRTUAL
180
181// Implementation
182public:
183    virtual ~CFHDragWnd();
184    virtual BOOL Create(CRect rect, CFlatHeaderCtrl* pFlatHeaderCtrl, INT iItem);
185
186protected:
187    CFlatHeaderCtrl *m_pFlatHeaderCtrl;
188    INT             m_iItem;
189
190    // Generated message map functions
191protected:
192    //{{AFX_MSG(CFHDragWnd)
193    afx_msg void OnPaint();
194    afx_msg BOOL OnEraseBkgnd(CDC* pDC);
195    //}}AFX_MSG
196    DECLARE_MESSAGE_MAP()
197};
198
199/////////////////////////////////////////////////////////////////////////////
200
201//{{AFX_INSERT_LOCATION}}
202// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
203
204#endif // !defined(AFX_FLATHEADERCTRL_H__2162BEB4_A882_11D2_B18A_B294B34D6940__INCLUDED_)
Note: See TracBrowser for help on using the repository browser.