📄 enumidl.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 + -