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

📄 listctrlx.h

📁 非常难得的eMule(电骡) V0.45b 源码下载 值得研究
💻 H
字号:
#ifndef __LIST_CTRL_X_H__
#define __LIST_CTRL_X_H__

#if _MSC_VER > 1000
#pragma once
#endif


//////////////////////////////////////////////////////////////////////////////
// LCX_SORT_ORDER

typedef enum
{
	DESCENDING = 0,
	ASCENDING,
	NONE
} LCX_SORT_ORDER;


// Sort state image list
#define LCX_SORT_STATE_IMAGE_WIDTH	8
#define LCX_SORT_STATE_IMAGE_HEIGHT 7

#define LCX_IDX_SORT_IMG_ASCENDING	0	// Arrow-Up (same symbol and meaning as MS Outlook)
#define LCX_IDX_SORT_IMG_DESCENDING 1	// Arrow-Down (same symbol and meaning as MS Outlook)
#define LCX_SORT_STATE_IMAGES		2


//////////////////////////////////////////////////////////////////////////////
// LCX_COLUMN_INIT

typedef struct
{
	int				iColID;
	LPCTSTR			pszHeading;
	UINT			uHeadResID;		// optional, set to 0, if not needed
	UINT			uFormat;
	int				iWidth;
	int				iOrder;
	LCX_SORT_ORDER	eDfltSortOrder;
	LCX_SORT_ORDER	eSortOrder;		// changed during runtime
	LPCTSTR			pszSample;
} LCX_COLUMN_INIT;


//////////////////////////////////////////////////////////////////////////////
// Common List Ctrl helpers
void ReadColumnStats(int iColumns, LCX_COLUMN_INIT* pColumns, LPCTSTR pszSection, LPCTSTR pszPrefix);
void WriteColumnStats(CListCtrl& lv, int iColumns, const LCX_COLUMN_INIT* pColumns, LPCTSTR pszSection, LPCTSTR pszPrefix);

void InitColumnOrders(CListCtrl& lv, int iColumns, const LCX_COLUMN_INIT* pColumns);
void SetItemFocus(CListCtrl& lv);
void UpdateHdrImageList(CListCtrl& lv, CImageList& imlHdr, UINT uIDHdrImgList, CSize sizeHdrImgListIcon, int iHdrImgListImages);
void CreateItemReport(CListCtrl& lv, CString& rstrReport);


/////////////////////////////////////////////////////////////////////////////
// CListCtrlX window

class CListCtrlX : public CListCtrl
{
// Construction
public:
	CListCtrlX();

// Attributes
public:
	CWnd* m_pParent;
	CMenu* m_pMenu;
	UINT m_uIDMenu;
	BOOL m_bRouteMenuCmdsToMainFrame;
	UINT m_uIDAccel;

	void SetRegistryKey(LPCTSTR pszRegKey) { m_strRegKey = pszRegKey; }
	void SetRegistryPrefix(LPCTSTR pszPrefix) { m_strRegPrefix = pszPrefix; }

	void EnableHdrCtrlSortBitmaps(BOOL bUseHdrCtrlSortBitmaps = TRUE);
	void SetHdrImgList(UINT uResID, int cx, int cy, int iImages);
	int GetSortBitmapWidth() const { return m_bUseHdrCtrlSortBitmaps ? 12 : LCX_SORT_STATE_IMAGE_WIDTH; }

	int GetSortColumn() const { return m_iSortColumn; }
	void SetSortColumn(int iColumns, LCX_COLUMN_INIT* pColumns, int iSortColumn);
	void UpdateSortColumn(int iColumns, LCX_COLUMN_INIT* pColumns);


// Operations
public:
	void CreateColumns(int iColumns, LCX_COLUMN_INIT* pColumns);
	void ReadColumnStats(int iColumns, LCX_COLUMN_INIT* pColumns);
	void ReadColumnStats(int iColumns, LCX_COLUMN_INIT* pColumns, LPCTSTR pszSection);
	void WriteColumnStats(int iColumns, const LCX_COLUMN_INIT* pColumns);
	void WriteColumnStats(int iColumns, const LCX_COLUMN_INIT* pColumns, LPCTSTR pszSection);

	void InitColumnOrders(int iColumns, const LCX_COLUMN_INIT* pColumns);

	void SelectAllItems();
	void DeselectAllItems();
	void CheckSelectedItems(int nCurrItem);

	void UpdateSortOrder(LPNMLISTVIEW pnmlv, int iColumns, LCX_COLUMN_INIT* pColumns);
	void UpdateHdrCtrlSortBitmap(int iSortedColumn, LCX_SORT_ORDER eSortOrder);

	void UpdateHdrImageList();
	void ApplyImageList(HIMAGELIST himl);

	void OnFindStart();
	void OnFindNext();
	void OnFindPrev();

// Overrides
	public:
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	protected:
	virtual void PreSubclassWindow();

// Implementation
public:
	virtual ~CListCtrlX();

	// Generated message map functions
protected:
	CString m_strRegKey;
	CString m_strRegPrefix;
	BOOL m_bUseHdrCtrlSortBitmaps;
	int m_iSortColumn;
	HACCEL m_hAccel;

	UINT m_uIDHdrImgList;
	CSize m_sizeHdrImgListIcon;
	int m_iHdrImgListImages;
	CImageList m_imlHdr;

	CString m_strFindText;
	BOOL m_bFindMatchCase;
	int m_iFindDirection;
	int m_iFindColumn;
	void DoFindNext(BOOL bShowError);
	void DoFind(int iStartItem, int iDirection /*1=down, 0 = up*/, BOOL bShowError);

	DECLARE_MESSAGE_MAP()
	afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
	afx_msg void OnSysColorChange();
	afx_msg void OnSetFocus(CWnd* pOldWnd);
	afx_msg void OnDestroy();
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu);
	afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
	afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
	afx_msg BOOL OnHdrBeginDrag(UINT, NMHDR*, LRESULT*);
	afx_msg BOOL OnHdrEndDrag(UINT, NMHDR*, LRESULT*);
	afx_msg LRESULT OnCopy(WPARAM wParam, LPARAM lParam);
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif //!__LIST_CTRL_X_H__

⌨️ 快捷键说明

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