⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ieshelltreectrl.h

📁 vc座的资源管理器源代码
💻 H
字号:
//*******************************************************************************
// COPYRIGHT NOTES
// ---------------
// You may use this source code, compile or redistribute it as part of your application 
// for free. You cannot redistribute it as a part of a software development 
// library without the agreement of the author. If the sources are 
// distributed along with the application, you should leave the original 
// copyright notes in the source code without any changes.
// This code can be used WITHOUT ANY WARRANTIES at your own risk.
// 
// For the latest updates to this code, check this site:
// http://www.masmex.com 
// after Sept 2000
// 
// Copyright(C) 2000 Philip Oldaker <email: philip@masmex.com>
//*******************************************************************************

#ifndef __IESHELLTREECTRL_H__
#define __IESHELLTREECTRL_H__

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

#ifndef __AFXMT_H__
#include "afxmt.h"
#endif
// IEShellTreeCtrl.h : header file
//
#include <afxpriv.h>
#include "IEFolderTreeCtrl.h"
#include "IEShellDragDrop.h"
/////////////////////////////////////////////////////////////////////////////
// CIEShellTreeCtrl window

class CTRL_EXT_CLASS CIEShellTreeCtrl : public CIEFolderTreeCtrl
{
// Construction
public:
	CIEShellTreeCtrl();

// Attributes
public:
	void SetNotifyParent(bool bNotifyParent) { m_bNotifyParent = bNotifyParent; }
	bool RefreshAllowed() { return m_bRefreshAllowed; }
	void SetRefreshAllowed(bool bRefresh) { m_bRefreshAllowed = bRefresh; } 
	void SetListCtrlWnd(HWND hWnd) { m_hListWnd = hWnd; }
	void SetComboBoxWnd(HWND hWnd) { m_hComboWnd = hWnd; }
	CString GetSelectedPath() { return GetPathName(); }
// Operations
public:
	virtual void UpOneLevel(HTREEITEM hItem=NULL);
	virtual void ShellExecute(HTREEITEM hItem,LPCTSTR pszVerb=NULL);
	virtual void SetNotificationObject(bool bNotify);
	virtual bool LoadFolderItems(LPCTSTR pszPath=NULL);
	virtual bool GetFolderInfo(HTREEITEM hItem,CString &sPath,CString &sName);
	virtual void Refresh();
	virtual HTREEITEM FindPidl(LPITEMIDLIST pidlAbs,BOOL bSelect=TRUE);
	virtual HTREEITEM ExpandPidl(LPITEMIDLIST pidlAbs);
	virtual HTREEITEM ExpandMyComputer(LPITEMIDLIST pidlAbs);
// Overrides
protected:
	virtual void RefreshComboBox(LPTVITEMDATA lptvid);
	virtual void DestroyThreads();
	virtual void CreateFileChangeThreads(HWND hwnd);
	virtual void CreateFileChangeThread (const CString& sPath,HWND hwnd);
	virtual HTREEITEM SearchSiblings(HTREEITEM hItem,LPITEMIDLIST pidlAbs);
	virtual HTREEITEM FindItem(HTREEITEM hItem, const CString& strTarget);
	virtual UINT DeleteChildren(HTREEITEM hItem);
	virtual bool SHMoveFile(HTREEITEM hSrcItem,HTREEITEM hDestItem);
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CIEShellTreeCtrl)
	virtual BOOL OnWndMsg( UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult );
	virtual bool Expanding(NM_TREEVIEW *nmtvw);
	virtual CRefresh *CreateRefreshObject(HTREEITEM hItem,LPARAM lParam);
	virtual DROPEFFECT DoDragDrop(NM_TREEVIEW* pNMTreeView,COleDataSource *pOleDataSource);
	virtual bool EndLabelEdit(HTREEITEM hItem,LPCTSTR pszText);
	virtual BOOL TransferItem(HTREEITEM hitemDrag, HTREEITEM hitemDrop);
	protected:
	virtual void Init();
	virtual void ShowProperties(HTREEITEM hItem);
	virtual void ShowPopupMenu(HTREEITEM hItem,CPoint point);
	virtual void DoubleClick(HTREEITEM hItem);
	virtual void DeleteKey(HTREEITEM hItem);
	virtual void GoBack(HTREEITEM hItem);
	virtual void PreSubclassWindow();
	virtual void UpdateEvent(LPARAM lHint,CObject *pHint);
	virtual bool DragDrop(CDD_OleDropTargetInfo *pInfo);
	virtual bool DragOver(CDD_OleDropTargetInfo *pInfo);
	virtual bool DragEnter(CDD_OleDropTargetInfo *pInfo);
	virtual bool DragLeave(CDD_OleDropTargetInfo *pInfo);
	//}}AFX_VIRTUAL
// Implementation
public:
	virtual ~CIEShellTreeCtrl();

// Generated message map functions
protected:
	//{{AFX_MSG(CIEShellTreeCtrl)
			// NOTE - the ClassWizard will add and remove member functions here.
	afx_msg BOOL OnRclick(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnDestroy();
	afx_msg LRESULT OnAppDirChangeEvent(WPARAM wParam, LPARAM lParam);
	afx_msg LRESULT OnCBIESelChange(WPARAM wParam,LPARAM lParam);
	afx_msg LRESULT OnAppPopulateTree(WPARAM wParam, LPARAM lParam );
	afx_msg LRESULT OnAppCbIeHitEnter(WPARAM wParam, LPARAM lParam );
	afx_msg LRESULT OnSetmessagestring(WPARAM wParam, LPARAM lParam );
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
private:
	enum { MAX_THREADS=32 };
	static UINT ThreadFunc (LPVOID pParam);
	LPTVITEMDATA m_lptvid;
	HANDLE m_hThreads[MAX_THREADS];
	CWinThread *m_pThreads[MAX_THREADS];
	CEvent m_event[MAX_THREADS];
	int m_nThreadCount;
	bool m_bRefreshAllowed;
	bool m_bNotifyParent;
	CIEShellDragDrop m_ShellDragDrop;
	HWND m_hListWnd;
	HWND m_hComboWnd;
};

/////////////////////////////////////////////////////////////////////////////
typedef struct DC_THREADINFO
{
    HANDLE hEvent;
    CIEShellTreeCtrl *pTreeCtrl;
	CString sPath;
} DC_THREADINFO, *PDC_THREADINFO;


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

#endif //__IESHELLTREECTRL_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -