IEShellTreeCtrl.h
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:5k
源码类别:

图形图象

开发平台:

Visual C++

  1. //*******************************************************************************
  2. // COPYRIGHT NOTES
  3. // ---------------
  4. // You may use this source code, compile or redistribute it as part of your application 
  5. // for free. You cannot redistribute it as a part of a software development 
  6. // library without the agreement of the author. If the sources are 
  7. // distributed along with the application, you should leave the original 
  8. // copyright notes in the source code without any changes.
  9. // This code can be used WITHOUT ANY WARRANTIES at your own risk.
  10. // 
  11. // For the latest updates to this code, check this site:
  12. // http://www.masmex.com 
  13. // after Sept 2000
  14. // 
  15. // Copyright(C) 2000 Philip Oldaker <email: philip@masmex.com>
  16. //*******************************************************************************
  17. #ifndef __IESHELLTREECTRL_H__
  18. #define __IESHELLTREECTRL_H__
  19. #if _MSC_VER > 1000
  20. #pragma once
  21. #endif // _MSC_VER > 1000
  22. #ifndef __AFXMT_H__
  23. #include "afxmt.h"
  24. #endif
  25. // IEShellTreeCtrl.h : header file
  26. //
  27. #include <afxpriv.h>
  28. #include "IEFolderTreeCtrl.h"
  29. #include "IEShellDragDrop.h"
  30. /////////////////////////////////////////////////////////////////////////////
  31. // CIEShellTreeCtrl window
  32. class CTRL_EXT_CLASS CIEShellTreeCtrl : public CIEFolderTreeCtrl
  33. {
  34. // Construction
  35. public:
  36. CIEShellTreeCtrl();
  37. // Attributes
  38. public:
  39. void SetNotifyParent(bool bNotifyParent) { m_bNotifyParent = bNotifyParent; }
  40. bool RefreshAllowed() { return m_bRefreshAllowed; }
  41. void SetRefreshAllowed(bool bRefresh) { m_bRefreshAllowed = bRefresh; } 
  42. void SetListCtrlWnd(HWND hWnd) { m_hListWnd = hWnd; }
  43. void SetComboBoxWnd(HWND hWnd) { m_hComboWnd = hWnd; }
  44. CString GetSelectedPath() { return GetPathName(); }
  45. // Operations
  46. public:
  47. virtual void UpOneLevel(HTREEITEM hItem=NULL);
  48. virtual void ShellExecute(HTREEITEM hItem,LPCTSTR pszVerb=NULL);
  49. virtual void SetNotificationObject(bool bNotify);
  50. virtual bool LoadFolderItems(LPCTSTR pszPath=NULL);
  51. virtual bool GetFolderInfo(HTREEITEM hItem,CString &sPath,CString &sName);
  52. virtual void Refresh();
  53. virtual HTREEITEM FindPidl(LPITEMIDLIST pidlAbs,BOOL bSelect=TRUE);
  54. virtual HTREEITEM ExpandPidl(LPITEMIDLIST pidlAbs);
  55. virtual HTREEITEM ExpandMyComputer(LPITEMIDLIST pidlAbs);
  56. // Overrides
  57. protected:
  58. virtual void RefreshComboBox(LPTVITEMDATA lptvid);
  59. virtual void DestroyThreads();
  60. virtual void CreateFileChangeThreads(HWND hwnd);
  61. virtual void CreateFileChangeThread (const CString& sPath,HWND hwnd);
  62. virtual HTREEITEM SearchSiblings(HTREEITEM hItem,LPITEMIDLIST pidlAbs);
  63. virtual HTREEITEM FindItem(HTREEITEM hItem, const CString& strTarget);
  64. virtual UINT DeleteChildren(HTREEITEM hItem);
  65. virtual bool SHMoveFile(HTREEITEM hSrcItem,HTREEITEM hDestItem);
  66. // ClassWizard generated virtual function overrides
  67. //{{AFX_VIRTUAL(CIEShellTreeCtrl)
  68. virtual BOOL OnWndMsg( UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult );
  69. virtual bool Expanding(NM_TREEVIEW *nmtvw);
  70. virtual CRefresh *CreateRefreshObject(HTREEITEM hItem,LPARAM lParam);
  71. virtual DROPEFFECT DoDragDrop(NM_TREEVIEW* pNMTreeView,COleDataSource *pOleDataSource);
  72. virtual bool EndLabelEdit(HTREEITEM hItem,LPCTSTR pszText);
  73. virtual BOOL TransferItem(HTREEITEM hitemDrag, HTREEITEM hitemDrop);
  74. protected:
  75. virtual void Init();
  76. virtual void ShowProperties(HTREEITEM hItem);
  77. virtual void ShowPopupMenu(HTREEITEM hItem,CPoint point);
  78. virtual void DoubleClick(HTREEITEM hItem);
  79. virtual void DeleteKey(HTREEITEM hItem);
  80. virtual void GoBack(HTREEITEM hItem);
  81. virtual void PreSubclassWindow();
  82. virtual void UpdateEvent(LPARAM lHint,CObject *pHint);
  83. virtual bool DragDrop(CDD_OleDropTargetInfo *pInfo);
  84. virtual bool DragOver(CDD_OleDropTargetInfo *pInfo);
  85. virtual bool DragEnter(CDD_OleDropTargetInfo *pInfo);
  86. virtual bool DragLeave(CDD_OleDropTargetInfo *pInfo);
  87. //}}AFX_VIRTUAL
  88. // Implementation
  89. public:
  90. virtual ~CIEShellTreeCtrl();
  91. // Generated message map functions
  92. protected:
  93. //{{AFX_MSG(CIEShellTreeCtrl)
  94. // NOTE - the ClassWizard will add and remove member functions here.
  95. afx_msg BOOL OnRclick(NMHDR* pNMHDR, LRESULT* pResult);
  96. afx_msg void OnDestroy();
  97. afx_msg LRESULT OnAppDirChangeEvent(WPARAM wParam, LPARAM lParam);
  98. afx_msg LRESULT OnCBIESelChange(WPARAM wParam,LPARAM lParam);
  99. afx_msg LRESULT OnAppPopulateTree(WPARAM wParam, LPARAM lParam );
  100. afx_msg LRESULT OnAppCbIeHitEnter(WPARAM wParam, LPARAM lParam );
  101. afx_msg LRESULT OnSetmessagestring(WPARAM wParam, LPARAM lParam );
  102. //}}AFX_MSG
  103. DECLARE_MESSAGE_MAP()
  104. private:
  105. enum { MAX_THREADS=32 };
  106. static UINT ThreadFunc (LPVOID pParam);
  107. LPTVITEMDATA m_lptvid;
  108. HANDLE m_hThreads[MAX_THREADS];
  109. CWinThread *m_pThreads[MAX_THREADS];
  110. CEvent m_event[MAX_THREADS];
  111. int m_nThreadCount;
  112. bool m_bRefreshAllowed;
  113. bool m_bNotifyParent;
  114. CIEShellDragDrop m_ShellDragDrop;
  115. HWND m_hListWnd;
  116. HWND m_hComboWnd;
  117. };
  118. /////////////////////////////////////////////////////////////////////////////
  119. typedef struct DC_THREADINFO
  120. {
  121.     HANDLE hEvent;
  122.     CIEShellTreeCtrl *pTreeCtrl;
  123. CString sPath;
  124. } DC_THREADINFO, *PDC_THREADINFO;
  125. //{{AFX_INSERT_LOCATION}}
  126. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  127. #endif //__IESHELLTREECTRL_H__