文档告诉我,SHCreateShellItemArrayFromDataObject
比socket = io("http://127.0.0.1:3000/", {
query: {
userId: userId.value,
shopId: shopId.value
}
});
是从DataObject
获取文件列表的一种更简单的方法。我想在DataObject::GetFiles
中使用该函数,但无法弄清楚该怎么做。
我需要某种ShellExtInit::Initialize
来放置结果,但是它是一个抽象类,所以我不知道如何定义它。并且IShellItemArray
的最后一个参数应该是类型SHCreateShellItemArrayFromDataObject
,我不知道该如何满足。
我该如何修正代码?
void**
答案 0 :(得分:1)
接口只能由指针/引用访问。在这种情况下,您需要一个指针变量,并且必须将该变量的地址传递给SHCreateShellItemArrayFromDataObject()
(使用类型转换),以便它可以将该指针设置为一个IShellItemArray
实现对象的地址,壳牌为您创造。例如:
HRESULT MyContextMenuHandler::Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject* pdtObj, HKEY hkeyProgId)
{
...
IShellItemArray *items; // <-- pointer
HRESULT hr = SHCreateShellItemArrayFromDataObject(pdtObj, IID_IShellItemArray, (void**)&items); // <-- type cast
...
}