📄 mylistctrl.h
字号:
#if !defined(AFX_MYLISTCTRL_H__BE4720D0_9531_4313_960C_CAAF559AE5A0__INCLUDED_)
#define AFX_MYLISTCTRL_H__BE4720D0_9531_4313_960C_CAAF559AE5A0__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// MyListCtrl.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CMyListCtrl window
#ifndef _countof
#define _countof(array) (sizeof(array)/sizeof(array[0]))
#endif
#define DEFAULT_COLUMN_SEPERATOR "\t"
#include "MyLog.h"
class CMyListCtrl;
class IItemColorModifier
{
public:
virtual COLORREF GetItemColor(CMyListCtrl* pMyListCtrl,const DWORD dwItemIndex)=0;
};
#define COL_NAME_DATATIME "时间"
#define COL_NAME_SEQ "SEQ"
#define COL_NAME_MESSAGE "消息"
class IToolTip
{
public:
virtual void OnUpdateScriptTip(const POINT point)=0;
};
class CMyListCtrl : public CListCtrl
{
struct SORT_PARAM
{
CMyListCtrl* pMyListCtrl;
DWORD dwColumn;
};
// Construction
public:
CMyListCtrl();
// Attributes
public:
long AddColumn(
const char * pszColName,
const unsigned long ulColWidth,
const long lColumnFormat=LVCFMT_LEFT
);
CString GetItemTextByName(
const int nItem,
const char* pszColumnName
);
BOOL GetItemTextByName(
const int nItem,
const char* pszColumnName,
CString& strTxt
);
BOOL SetItemTextByName(
const int nItem,
const char* pszColumnName,
LPCTSTR lpszText,
const ULONG ulAutoAddColumnWidth=100,
const long lColumnFormat=LVCFMT_LEFT
);
long FindColumnIndex(
const char *pszColumnName,
const bool bCompareNoCase=true
);
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMyListCtrl)
public:
protected:
//}}AFX_VIRTUAL
// Implementation
public:
//
virtual void OnSwapLine(const long lLine1, const long lLine2);
BOOL GetRowText(const LONG lRow, STRING_LIST &RowTxtList);
BOOL SetRowText(const LONG lRow, STRING_LIST &RowTxtList);
BOOL SwapLine(const long lLine1,const long lLine2,const bool bAutoSelectLine2=true);
void SetIToolTip(IToolTip* pIToolTip);
void AddColumnText(const char *pszColumn, STRING_LIST &TxtList,const BOOL bClearBeforeInsert);
BOOL GetColumnText(const char* pszColumn,STRING_LIST& TxtList,const BOOL bSelectedOnly=FALSE);
void DeleteAllSelectedItems();
void SetEnsureVisible(const BOOL bEnsureVisible);
void DisableDeleteShortKey(const BOOL bDisableDeleteShortKey);
BOOL SaveAllAsHTML(
const char* pszColumnNameList,
const char* pszHTMLFilePath,
const char* pszFontName,
const DWORD dwFontSize
);
void SetIItemColorModifier(IItemColorModifier* pIItemColorModifier);
void SelectAllItems();
void SetCopySelectedColumnInfo(
const char* pszColumnNameList,
const BOOL bCopyHeader=FALSE,
const char* pszColumnSeperator=DEFAULT_COLUMN_SEPERATOR
);
void SetSingleSelectionOnly(const BOOL bEnable);
void AutoExpandAllColumn();
void Init(long dwResIDImageList);
long AddRow(
const long lInsertAfter=-1,
const bool bEnsureVisible=false
);
virtual ~CMyListCtrl();
// Generated message map functions
protected:
//{{AFX_MSG(CMyListCtrl)
afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
void CopySelecteColumnDataToClipboard();
int CompareItems(
const LONG lRowIndex1,
const LONG lRowIndex2,
const DWORD dwColumn
);
static int CALLBACK CompareFunction( LPARAM lParam1, LPARAM lParam2, LPARAM lParamData );
void SortByOneColumn(
const long lColumn,
const BOOL bAscending=TRUE
);
private:
CImageList m_imageList;
BOOL m_bEnableSortByHdr;
STRING_LIST m_CopyOnSelectedColumnNameList;
CString m_strCopyOnSelectedColumnSeperator;
BOOL m_bCopyHeader;
IItemColorModifier* m_pIItemColorModifier;
BOOL m_bDisableDeleteShortKey;
BOOL m_bSingleSelectionOnly;
BOOL m_bEnsureVisible;
IToolTip* m_pIToolTip;
};
BOOL SelectListCtrlItems(
STRING_LIST& StrList,
CMyListCtrl* pListCtrl,
const char* pszColName
);
BOOL GetListCtrlSelectedItems(
CMyListCtrl* pListCtrl,
const char* pszColName,
STRING_LIST& StrList,
const BOOL bClearStrList
);
BOOL SetResourceString(
LPCTSTR szModuleFilePath,
const DWORD dwResId,
LPCTSTR szNewString,
WORD wIDLanguage=MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED)
);
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MYLISTCTRL_H__BE4720D0_9531_4313_960C_CAAF559AE5A0__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -