⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flatheaderctrl.h

📁 磁盘容量扫描、但界面和程序结构非常不错
💻 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 <afxtempl.h>
#include <tchar.h>

#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<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, 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_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -