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

📄 mylistctrl.h

📁 SQLBig5BugTool 宽字符操作问题
💻 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 + -