📄 listctrlx.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 + -