#if !defined(AFX_PROPERTIESLIST_H__0BC352B3_8869_46D9_873B_D65D705F1228__INCLUDED_)
#define AFX_PROPERTIESLIST_H__0BC352B3_8869_46D9_873B_D65D705F1228__INCLUDED_

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

enum SORT_TYPE { SORT_CATEGORY, SORT_COMMAND, SORT_KEY };

// PropertiesList.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CPropertiesList dialog

class CPropertiesList : public CPropertyPage
{
	DECLARE_DYNCREATE(CPropertiesList)

// Construction
public:
	void EnableControl();
	void GetDialogData();
	void SetDialogData(CString szApplicationName);
	CPropertiesList();
	~CPropertiesList();

// Dialog Data
	//{{AFX_DATA(CPropertiesList)
	enum { IDD = IDD_PROPERTIES_LIST };
	CListCtrl	m_cPropertiesList;
	//}}AFX_DATA


// Overrides
	// ClassWizard generate virtual function overrides
	//{{AFX_VIRTUAL(CPropertiesList)
	public:
	virtual BOOL OnSetActive();
	virtual BOOL OnKillActive();
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	// Generated message map functions
	//{{AFX_MSG(CPropertiesList)
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	virtual BOOL OnInitDialog();
	afx_msg void OnColumnclickPropertiesList(NMHDR* pNMHDR, LRESULT* pResult);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
private:
	int m_nKeyWidth;
	int m_nCommandWidth;
	int m_nCategoryWidth;
	static int Sort(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort, SORT_TYPE sortType);
	void InsertItem(LPCTSTR szCategory, LPCTSTR szCommandName, LPCTSTR szKey);
	void SortItem(int nColumn);
	void DisplayIndicator();
	static BOOL m_bSortAscending;
	int m_nSelectedColumn;
	static int CALLBACK SortKey(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
	static int CALLBACK SortCommand(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
	static int CALLBACK SortCategory(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
	CProperties* m_pProperties;
	void UpdateDialogData(CString szApplicationName, BOOL bSaveAndValidate = TRUE);
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_PROPERTIESLIST_H__0BC352B3_8869_46D9_873B_D65D705F1228__INCLUDED_)

(C) 2001-2005 oishi@cam.hi-ho.ne.jp