www.pudn.com > TrueCrypt.rar > ShellContextMenu.h


// ShellContextMenu.h: Schnittstelle für die Klasse CShellContextMenu. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_SHELLCONTEXTMENU_H__A358AACF_7C7C_410D_AD29_67310B2DDC22__INCLUDED_) 
#define AFX_SHELLCONTEXTMENU_H__A358AACF_7C7C_410D_AD29_67310B2DDC22__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
 
///////////////////////////////////////////////////////////////////// 
// class to show shell contextmenu of files/folders/shell objects 
// developed by R. Engels 2003 
///////////////////////////////////////////////////////////////////// 
 
class CShellContextMenu   
{ 
public: 
	CMenu * GetMenu (); 
	void SetObjects (IShellFolder * psfFolder, LPITEMIDLIST pidlItem); 
	void SetObjects (IShellFolder * psfFolder, LPITEMIDLIST * pidlArray, int nItemCount); 
	void SetObjects (LPITEMIDLIST pidl); 
	void SetObjects (CString strObject); 
	void SetObjects (CStringArray &strArray); 
	UINT ShowContextMenu (CWnd* pWnd, CPoint pt); 
	CShellContextMenu(); 
	virtual ~CShellContextMenu(); 
 
private: 
	int nItems; 
	BOOL bDelete; 
	CMenu * m_Menu; 
	IShellFolder * m_psfFolder; 
	LPITEMIDLIST * m_pidlArray;	 
	 
	void InvokeCommand (LPCONTEXTMENU pContextMenu, UINT idCommand); 
	BOOL GetContextMenu (void ** ppContextMenu, int & iMenuType); 
	HRESULT SHBindToParentEx (LPCITEMIDLIST pidl, REFIID riid, VOID **ppv, LPCITEMIDLIST *ppidlLast); 
	static LRESULT CALLBACK HookWndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); 
	void FreePIDLArray (LPITEMIDLIST * pidlArray); 
	LPITEMIDLIST CopyPIDL (LPCITEMIDLIST pidl, int cb = -1); 
	UINT GetPIDLSize (LPCITEMIDLIST pidl); 
	LPBYTE GetPIDLPos (LPCITEMIDLIST pidl, int nPos); 
	int GetPIDLCount (LPCITEMIDLIST pidl); 
}; 
 
#endif // !defined(AFX_SHELLCONTEXTMENU_H__A358AACF_7C7C_410D_AD29_67310B2DDC22__INCLUDED_)