www.pudn.com > PhoneReaderSrc.rar > SPListViewCtrl.h


////////////////////////////////////////////////////////////////////// 
// Filename:	SPListViewCtrl.h 
// Description:	The list view control a-la "Programs" list 
// Created:		July, 2002 
// Author:		Yaroslav Goncharov, yaroslav@softspb.com 
// Comments:	See www.smartphonedn.com for description 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_SPLISTVIEWCTRL_H__AB7967B9_C7F9_4336_9260_8BD4CDA70009__INCLUDED_) 
#define AFX_SPLISTVIEWCTRL_H__AB7967B9_C7F9_4336_9260_8BD4CDA70009__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#include "resource.h" 
 
#define SPL_EXECUTE (WM_USER + 117) 
 
class CSPListViewCtrl : public CWindowImpl 
{ 
public: 
	void SetFontColor(COLORREF crSelected, COLORREF crUnSelected); 
	void SetBkImage(UINT nID); 
	void SetFontSize(int nFontSize); 
	void InitControl(); 
	DECLARE_WND_SUPERCLASS(NULL, CListViewCtrl::GetWndClassName()) 
 
	BEGIN_MSG_MAP(CSPListViewCtrl) 
		MESSAGE_HANDLER(WM_DESTROY, OnDestroy) 
		MESSAGE_HANDLER(WM_KEYDOWN, OnKeyDown) 
		MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd) 
		REFLECTED_NOTIFY_CODE_HANDLER(NM_CUSTOMDRAW,OnCustomDraw) 
	END_MSG_MAP() 
 
	CSPListViewCtrl(); 
	virtual ~CSPListViewCtrl(); 
 
	void AddItem(LPCTSTR lpszText, int nIcon); 
	HWND Create(HWND hParent, _U_RECT rc); 
	void DeleteItem(int nIndex); 
	BOOL m_ImageTypeFlag; 
	BOOL m_MoreFlag; 
 
public: 
	void UpdateNumeration(); 
	void CreateItemFont(); 
	LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) 
	{ 
		SetFont(NULL); 
		::DeleteObject(m_hFont); 
		return 0; 
	} 
	LRESULT OnKeyDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) 
	{ 
		int nIndex = wParam - '1'; 
		if (wParam == VK_RETURN)  
		{ 
			nIndex = GetSelectedIndex(); 
		} 
		if (nIndex >= 0 && nIndex < GetItemCount())  
		{ 
			SelectItem(nIndex); 
			::SendMessage(GetParent(), SPL_EXECUTE, nIndex, 0);	 
		} 
 
		if ((wParam == VK_TLEFT) || (wParam == VK_TRIGHT)|| (wParam == VK_TUP) || (wParam == VK_TDOWN)) 
		{ 
			::SendMessage(GetParent(), WM_KEYDOWN, wParam, 0); 
		} 
		bHandled = FALSE; 
 
		return 0; 
	} 
	LRESULT OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 
	LRESULT OnCustomDraw(int idCtrl, LPNMHDR pnmh, BOOL& bHandled); 
private: 
	HFONT m_hFont; 
	int	  m_nFontSize; 
protected: 
	UINT m_nImage; 
	COLORREF m_crSelected,m_crUnSelected; 
}; 
 
#endif // !defined(AFX_SPLISTVIEWCTRL_H__AB7967B9_C7F9_4336_9260_8BD4CDA70009__INCLUDED_)