Click here to Skip to main content
15,881,281 members
Articles / Programming Languages / C++

Project Line Counter Add-In v2.10 for VS.NET and VC6

Rate me:
Please Sign up or sign in to vote.
4.92/5 (38 votes)
29 Jun 2003 447.4K   5.3K   142  
Get statistics about your source code with a click of a button
// SortClass.h : header file
//

#ifndef __SORTCLASS_H__
#define __SORTCLASS_H__

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

enum SORT_TYPE{ 
	TYPE_TEXT,
	TYPE_NUMERIC,
	TYPE_DATE,
	TYPE_CHECKBOX
};

class CSortClass
{
public:
	CSortClass(CListCtrl* _pWnd, const int _iCol, const SORT_TYPE _sortType);
	//CSortClass(CListCtrl * _pWnd, const int _iCol, const bool _bIsNumeric, int iStartingItem, int iEndingItem );
	virtual ~CSortClass();		
	
	int iCol;	
	int m_iStartingItem;
	int m_iEndingItem;

	CListCtrl* pWnd;


	SORT_TYPE m_sortType;
	
	//bool bIsNumeric;
	
	void Sort(const bool bAsc);	

	//TEXT
	static int CALLBACK CompareAsc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
	static int CALLBACK CompareDes(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
	//NUMERIC
	static int CALLBACK CompareAscNumeric(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
	static int CALLBACK CompareDesNumeric(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
	//DATE
	static int CALLBACK CompareAscDate(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
	static int CALLBACK CompareDesDate(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
	//CHECKBOX
	static int CALLBACK CompareAscCheck(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
	static int CALLBACK CompareDesCheck(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);

public:	
	static void CString_Replace(CString& cStr, LPCTSTR cToReplace, LPCTSTR cWithWhat);

	//we need this one to mark the last item that we want at the bottom
	class CSortItemGeneric
	{
		BOOL m_bLast;
	public:
		virtual ~CSortItemGeneric() {}
		CSortItemGeneric(const CListCtrl* _pWnd, const int _iRow);

		static int CheckLast( CSortItemGeneric* i1, CSortItemGeneric* i2 );
		const BOOL IsLast();
	};

	class CSortItem	: public CSortItemGeneric
	{	
	public:		
		virtual ~CSortItem() {}
		CSortItem(const DWORD _dw, const CString &_txt, const CListCtrl* _pWnd, const int _iRow);
		CString txt;		
		DWORD dw;	
	};
	class CSortItemNumeric : public CSortItemGeneric
	{	
	public:
		virtual ~CSortItemNumeric()	{}
		CSortItemNumeric(const DWORD _dw, const CString &_txt, const CListCtrl* _pWnd, const int _iRow);
		double dNum;
		DWORD dw;	
	};
	class CSortItemDate	: public CSortItemGeneric
	{	
	public:
		virtual ~CSortItemDate() {}
		CSortItemDate(const DWORD _dw, const CString &_txt, const CListCtrl* _pWnd, const int _iRow);
		COleDateTime oTime;
		DWORD dw;	
	};
	class CSortItemCheck : public CSortItemGeneric
	{	
	public:
		virtual ~CSortItemCheck() {}
		CSortItemCheck(const DWORD _dw, const CListCtrl* _pWnd, const int _iRow);
		BOOL bCheck;
		DWORD dw;	
	};
};

#endif //__SORTCLASS_H__

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Experion
Canada Canada
You may know Oz from his WndTabs days. Oz has long since left client side development to work on web technologies and to consult in the R&D management field.

Comments and Discussions