Files
ayanova7/archive/ayanova 1.9.4 CE final release db schema 171/sp/FlatHeaderCtrl.h

280 lines
7.0 KiB
C++

////////////////////////////////////////////////////////////////////////////
// File: CFlatHeaderCtrl.h
// Version: 1.0.4
//
// Author: Maarten Hoeben
// E-mail: hoeben@nwn.com
//
// Specification of the CFlatHeaderCtrl and associated classes.
//
// This code may be used in compiled form in any way you desire. This
// file may be redistributed unmodified by any means PROVIDING it is
// not sold for profit without the authors written consent, and
// providing that this notice and the authors name and all copyright
// notices remains intact.
//
// An email letting me know how you are using it would be nice as well.
//
// This file is provided "as is" with no expressed or implied warranty.
// The author accepts no liability for any damage/loss of business that
// this product may cause.
//
////////////////////////////////////////////////////////////////////////////
#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 <afxtempl.h>
#include <tchar.h>
#define FLATHEADER_TEXT_MAX 80
#define FLATHEADER_TT_MAGIC -13111971
/////////////////////////////////////////////////////////////////////////////
// CFlatHeaderCtrl window
class CFlatHeaderCtrl;
class CFHDragWnd;
class CFHDropWnd;
#define FH_PROPERTY_SPACING 1
#define FH_PROPERTY_ARROW 2
#define FH_PROPERTY_STATICBORDER 3
#define FH_PROPERTY_DONTDROPCURSOR 4
#define FH_PROPERTY_DROPTARGET 5
#define FH_PROPERTY_ENABLETOOLTIPS 6
#define HDF_EX_AUTOWIDTH 0x0001
#define HDF_EX_INCLUDESORT 0x0002
#define HDF_EX_FIXEDWIDTH 0x0004
#define HDF_EX_TOOLTIP 0x0008
typedef struct _HDITEMEX
{
UINT nStyle;
INT iMinWidth;
INT iMaxWidth;
CString strToolTip;
_HDITEMEX() : nStyle(0), iMinWidth(0), 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);
INT GetItemWidth(LPHDITEM lphdi, BOOL bIncludeSort = FALSE);
void SetSortColumn(INT iPos, BOOL bSortAscending);
INT GetSortColumn(BOOL* pbSortAscending = NULL);
INT GetDropResult();
// Overrides
public:
int GetHotIndex();
int GetHotColumn();
TCHAR m_szHotItemText[FLATHEADER_TEXT_MAX];
virtual ~CFlatHeaderCtrl();
virtual void DrawItem(LPDRAWITEMSTRUCT);
virtual void DrawItem(CDC* pDC, CRect rect, LPHDITEM lphdi, BOOL bSort, BOOL bSortAscending);
virtual int OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFlatHeaderCtrl)
//}}AFX_VIRTUAL
// Implementation
protected:
BOOL m_bDoubleBuffer;
INT m_iSpacing;
SIZE m_sizeImage;
SIZE m_sizeArrow;
BOOL m_bStaticBorder;
UINT m_nDontDropCursor;
HWND m_hDropTarget;
CRect m_rcDropTarget;
INT m_iDropResult;
INT m_iHotIndex;
INT m_iHotOrder;
BOOL m_bHotItemResizable;
HDHITTESTINFO m_hdhtiHotItem;
HDITEM m_hdiHotItem;
// TCHAR m_szHotItemText[FLATHEADER_TEXT_MAX];
BOOL m_bResizing;
INT m_iHotDivider;
COLORREF m_crHotDivider;
CFHDropWnd* m_pDropWnd;
BOOL m_bDragging;
CFHDragWnd* m_pDragWnd;
UINT m_nClickFlags;
CPoint m_ptClickPoint;
BOOL m_bSortAscending;
INT m_iSortColumn;
CArray<HDITEMEX, HDITEMEX> m_arrayHdrItemEx;
COLORREF m_cr3DHighLight;
COLORREF m_cr3DShadow;
COLORREF m_cr3DFace;
COLORREF m_crText;
void DrawCtrl(CDC* pDC);
INT DrawImage(CDC* pDC, CRect rect, LPHDITEM hdi, BOOL bRight);
INT DrawBitmap(CDC* pDC, CRect rect, LPHDITEM hdi, CBitmap* pBitmap, BITMAP* pBitmapInfo, BOOL bRight);
INT DrawText (CDC* pDC, CRect rect, LPHDITEM lphdi);
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 OnSetImageList(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 void OnCancelMode();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
BOOL OnToolTipNotify(UINT nId, NMHDR *pNMHDR, LRESULT *pResult);
};
/////////////////////////////////////////////////////////////////////////////
// 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, LPHDITEM lphdiItem);
protected:
CFlatHeaderCtrl* m_pFlatHeaderCtrl;
INT m_iItem;
LPHDITEM m_lphdiItem;
// Generated message map functions
protected:
//{{AFX_MSG(CFHDragWnd)
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// CFHDropWnd window
#define FHDROPWND_CLASSNAME _T("MFCFHDropWnd")
class CFHDropWnd : public CWnd
{
// Construction
public:
CFHDropWnd(COLORREF crColor);
// Attributes
public:
// Operations
public:
void SetWindowPos(INT x, INT y);
// Overrrides
protected:
// Drawing
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFHDropWnd)
protected:
virtual void PostNcDestroy();
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CFHDropWnd();
virtual BOOL Create(INT iHeight);
protected:
CBrush m_brush;
CRgn m_rgn;
INT m_iHeight;
// Generated message map functions
protected:
//{{AFX_MSG(CFHDropWnd)
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_)