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

📄 enumidl.h

📁 Drive.dll is a dll that creates a drive to system directoryor drive similar to existing drives such
💻 H
字号:
//
// EnumIDL.h
//

#ifndef _ENUMIDLIST_H_
#define _ENUMIDLIST_H_

#include <windows.h>
#include <shlobj.h>

// TODO : Change/Remove the following structures to suit your needs
typedef enum tagMYPIDLTYPE
{
	PT_ROOT		= 0x00,
	PT_FOLDER	= 0x01,
	PT_FILE		= 0x02,
	PT_INVALID	= 0x04
}MYPIDLTYPE;

typedef struct tagMYPIDLDATA
{
	char		szSignature[4];	// TODO  : check the signature in PidlMgr
	MYPIDLTYPE	pidlType;
	DWORD		dwSizeHigh;
	DWORD		dwSizeLow;
	DWORD		dwAttribs;
	FILETIME	ftLastWriteTime;
	UINT		uiSizeFile;
	UINT		uiSizeType;
	// uiSizeFile, uiSizeType contain the size of 
	// File & Type strings from szFileAndType
	TCHAR		szFileAndType[1];
}MYPIDLDATA, FAR *LPMYPIDLDATA;

////////////////////////////////////////////////////
// CPidlMgr : Class for managing Pidls
class CPidlMgr  
{
public:
	CPidlMgr ();
	~CPidlMgr ();
public:
	void			Delete(LPITEMIDLIST);
	LPITEMIDLIST	GetNextItem(LPCITEMIDLIST);
	LPITEMIDLIST	Copy(LPCITEMIDLIST);
	UINT			GetSize(LPCITEMIDLIST);
	LPMYPIDLDATA	GetDataPointer(LPCITEMIDLIST pidl);
	LPITEMIDLIST	GetLastItem(LPCITEMIDLIST pidl);
	LPITEMIDLIST	Concatenate(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2);
private:
	LPMALLOC m_pMalloc;
};
typedef CPidlMgr  FAR*	LPPIDLMGR;

////////////////////////////////////////////////////
// CEnumIDList : Class for managing IDLists
typedef struct tagMYENUMLIST
{
	LPITEMIDLIST			pidl;
	struct tagMYENUMLIST	*pNext;
}MYENUMLIST, FAR *LPMYENUMLIST;

class CShellFolder;
class CEnumIDList  : public IEnumIDList
{
public:
	CEnumIDList(CShellFolder *, LPCITEMIDLIST pidl, 
		DWORD dwFlags);
	~CEnumIDList();

	//IUnknown methods
	STDMETHOD (QueryInterface)(REFIID, LPVOID*);
	STDMETHOD_ (DWORD, AddRef)();
	STDMETHOD_ (DWORD, Release)();

	//IEnumIDList
	STDMETHOD (Next) (DWORD, LPITEMIDLIST*, LPDWORD);
	STDMETHOD (Skip) (DWORD);
	STDMETHOD (Reset) (void);
	STDMETHOD (Clone) (LPENUMIDLIST*);
protected:
	DWORD m_dwRefCount;
private:
	// TODO : Add implementation specific functions to create the IDList
	void createIDList(LPCITEMIDLIST pidl);
	BOOL addToEnumList(LPITEMIDLIST pidl);
private:
	LPMALLOC	m_pMalloc;
	LPPIDLMGR	m_pPidlMgr;
private:
	LPMYENUMLIST	m_pCurrentList;
	LPMYENUMLIST	m_pFirstList;
	LPMYENUMLIST	m_pLastList;
private:
	CShellFolder *m_pSF;
	DWORD			m_dwFlags;
};

#endif //_ENUMIDLIST_H_

⌨️ 快捷键说明

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