--- /dev/null
+//////////////////////////////////////////////////////\r
+// MyTreeView.h\r
+// Declaration of the CMyTreeView class\r
+\r
+#ifndef MYTREEVIEW_H\r
+#define MYTREEVIEW_H\r
+\r
+\r
+#include "ShellWrapper.h"\r
+\r
+using namespace ShellWrapper;\r
+\r
+\r
+class CMyTreeView : public CTreeView\r
+{\r
+public:\r
+ CMyTreeView();\r
+ virtual ~CMyTreeView();\r
+ HIMAGELIST GetImageList(BOOL bLarge);\r
+ BOOL GetRootItems();\r
+ BOOL SelectFromListView(Cpidl& CpidlFull);\r
+\r
+ protected:\r
+ virtual void OnInitialUpdate();\r
+ virtual LRESULT OnNotifyReflect(WPARAM wParam, LPARAM lParam);\r
+ virtual void PreCreate(CREATESTRUCT &cs);\r
+ virtual LRESULT WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam);\r
+\r
+private:\r
+ class TreeItemData //A nested class inside CMyTreeView\r
+ {\r
+ public:\r
+ TreeItemData(Cpidl& cpidlParent, Cpidl& cpidlRel, CShellFolder& cParentFolder);\r
+ TreeItemData(Cpidl& cpidl);\r
+ ~TreeItemData();\r
+\r
+ CShellFolder& GetParentFolder() {return m_cParentFolder;}\r
+ Cpidl& GetFullCpidl() {return m_cpidlFull;}\r
+ Cpidl& GetRelCpidl() {return m_cpidlRel;}\r
+\r
+ private:\r
+ Cpidl m_cpidlFull; //Fully Qualified PIDL\r
+ Cpidl m_cpidlRel; //Relative PIDL\r
+ CShellFolder m_cParentFolder; //Parent Folder\r
+\r
+ }; //class TreeItemData\r
+\r
+ typedef Shared_Ptr<TreeItemData> TreeItemDataPtr;\r
+\r
+ static int CALLBACK CompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);\r
+ void DeleteItems();\r
+ void DoItemMenu(HTREEITEM hItem, CPoint& ptScreen);\r
+ void DoContextMenu(CPoint& ptScreen);\r
+ void EnumObjects(HTREEITEM hParentItem, CShellFolder& cParentFolder, Cpidl& cpidlParent);\r
+ BOOL GetChildItems(HTREEITEM hParentItem);\r
+\r
+ void SetImageLists();\r
+\r
+ HIMAGELIST m_hLargeImageList;\r
+ HIMAGELIST m_hSmallImageList;\r
+ CContextMenu2 m_ccm2;\r
+ std::vector <TreeItemDataPtr> m_pItems;\r
+public:\r
+ DWORD m_dwThreadID;\r
+\r
+};\r
+\r
+#endif // MYTREEVIEW_H\r