65.9K
CodeProject 正在变化。 阅读更多。
Home

ITEMIDLIST的包装类

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.67/5 (3投票s)

2002年9月13日

Zlib

2分钟阅读

viewsIcon

82502

downloadIcon

1499

CItemIDList类有助于更轻松地管理ITEMIDLIST。

引言

这个类可以帮助您更轻松地管理 ITEMIDLISTCItemIDList 类包含指向 ITEMIDLIST 结构的指针(该指针位于 CItemIDList::m_pidl 中)。它还具有可以作为全局函数使用的公共静态成员函数。(版本 2.0)

构造函数

CItemIDList(LPCTSTR pcszPath);   

使用路径字符串构造。

CItemIDList(LPITEMIDLIST pidl);   

使用 LPITEMIDLIST 构造。(复制它,并在析构时释放)

CItemIDList(CItemIDList& iidl);   

使用另一个类对象构造。

CItemIDList(void);   

构造类实例,其中 m_pidl 为空。

成员函数

int GetIconIndex(void) const;

获取系统图像列表中文件夹项的图标索引。

BOOL GetDisplayName(LPTSTR pszBuf,DWORD dwFlags=SHGDN_NORMAL) const;   

检索 pidl 的显示名称。

CItemIDList Duplicate(UINT nCount=-1) const;   

根据计数数量复制 pidl。

inline BOOL IsEmpty(void) const;   

m_pidl 是否为 NULL

CItemIDList GetAt(UINT nIndex) const;   

返回指定索引处的相对 pidl。

BOOL Create(LPITEMIDLIST pidlf);   

LPITEMIDLIST 创建。

inline UINT GetCount(void) const;   

获取 pidl 计数。

inline UINT GetSize(void) const;   

获取 pidl 的大小,以字节为单位。

inline void Empty(void);   

释放 m_pidl 并将其设置为 NULL

void GetPath(LPTSTR pszPath) const;   

检索完整路径。(仅适用于完整质量的 pidl)

inline HRESULT GetUIObjectOf(REFIID riid,LPVOID* ppOut,HWND hWnd=NULL);   

检索其他 shell 接口。与 IShellFolder::GetUIObjectOf 相同。

inline void Split(LPSHELLFOLDER& lpsf,CItemIDList& ciid) const;   

从完整质量的 pidl 获取 IShellFolder 接口和尾部 pidl 单元。

CItemIDList GetLastPidl(void) const;  

检索尾部 pidl 单元。

void GetToolTipInfo(LPTSTR pszToolTip,UINT cbSize) const;  

检索 m_pidl 的工具提示信息。

void Attach(LPITEMIDLIST pidl);  

附加 pidl。

LPITEMIDLIST Detach(void); 

分离 pidl。

运算符

CItemIDList operator+(CItemIDList& piidl);   

连接两个 pidl。

operator LPITEMIDLIST(void) const;   

获取 m_pidl

operator LPCITEMIDLIST(void) const;   

获取 m_pidl 并转换为 LPCITEMIDLIST。

const CItemIDList& operator=(CItemIDList& ciidl1);   

从另一个类实例复制。

const CItemIDList& operator=(LPITEMIDLIST pidl);   

LPITEMIDLIST 复制。

operator+=(CItemIDList& ciidl);   

将新的 pidl 添加到 m_pidl 的尾部。

BOOL operator==(CItemIDList& ciidl);   

查询两个 pidl 的名称是否相同。

CItemIDList operator[](UINT nIndex);   

返回指定索引处的相对 pidl。(与 CItemIDList::GetAt(UINT nIndex) 相同)

示例

#include "ItemIDList.h"
#include <windows.h>
#include <iostream.h>

//Some test code...
void main()
{
	char szFile[MAX_PATH];
	ZeroMemory(szFile,MAX_PATH);

	OPENFILENAME info;
	ZeroMemory(&info,sizeof(info));

	info.lStructSize=sizeof(info);
	info.lpstrFile=szFile;
	info.hwndOwner=NULL;
	info.nMaxFile=MAX_PATH;

	if(GetOpenFileName(&info))
	{
		CItemIDList item(szFile),item2;
		char szName[MAX_PATH];
		item.GetDisplayName(szName);
		cout<<szName<<endl;

		item.GetToolTipInfo(szName,MAX_PATH);
		cout<<szName<<endl;

		item2=item;
		item2.GetPath(szName);
		cout<<szName<<endl;

		item2=item[item.GetCount()-1];
		item2.GetDisplayName(szName);
		cout<<szName<<endl;

		item2=item.GetAt(0);
		item2.GetDisplayName(szName);
		cout<<szName<<endl;

		CItemIDList item3;
		item3=item.Duplicate(item.GetCount()-1);
		item3.GetPath(szName);
		cout<<szName<<endl;

		item3=item.Duplicate(item.GetCount()-1)+item2;
		item3.GetPath(szName);
		cout<<szName<<endl;
	}
}

享受吧...

© . All rights reserved.