C Show不是IFileOpenDialog的成员
你好 我一直在与Microsoft Visual Studio 12合作,试图让COM程序正常工作。但是,我似乎无法访问IFileOpenDialog的相关函数和组件。我想这一定与我的收入有关。以下是错误消息:C Show不是IFileOpenDialog的成员,c,com,C,Com,你好 我一直在与Microsoft Visual Studio 12合作,试图让COM程序正常工作。但是,我似乎无法访问IFileOpenDialog的相关函数和组件。我想这一定与我的收入有关。以下是错误消息: 错误1错误C2039:“显示”:不是“IFileOpenDialog”c:\users\deylian\desktop\p\main.c 213 1项目1的成员 错误2错误C2039:“GetResult”:不是“IFileOpenDialog”c:\users\deylian\des
- 错误1错误C2039:“显示”:不是“IFileOpenDialog”c:\users\deylian\desktop\p\main.c 213 1项目1的成员
- 错误2错误C2039:“GetResult”:不是“IFileOpenDialog”c:\users\deylian\desktop\p\main.c 217 1 Project1的成员
- 错误3错误C2039:“GetDisplayName”:不是“IShellItem”c:\users\deylian\desktop\p\main.c 220 1 Project1的成员
- 错误4错误C2039:“发布”:不是“IShellItem”c:\users\deylian\desktop\p\main.c 226 1 Project1的成员
- 错误5错误C2039:“发布”:不是“IFileOpenDialog”c:\users\deylian\desktop\p\main.c 229 1项目1的成员
以下是包括:
#包括
#包括
#包括
#包括
#包括
#包括以及守则: HRESULT BasicFileOpen(){ HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE); if(SUCCEEDED(hr)){ IFileOpenDialog *pFileOpen = NULL; hr= CoCreateInstance(&CLSID_FileOpenDialog, NULL,CLSCTX_INPROC_SERVER, &IID_IFileOpenDialog, (void**)(&pFileOpen)); if(SUCCEEDED(hr)){ hr=pFileOpen->Show(NULL); if (SUCCEEDED(hr)){ IShellItem *pItem; hr = pFileOpen->GetResult(&pItem); if (SUCCEEDED(hr)){ PWSTR pszFilePath; hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath); if (SUCCEEDED(hr)){ MessageBox(NULL, (LPCSTR)pszFilePath, (LPCSTR)"File Path", MB_OK); CoTaskMemFree(pszFilePath); } pItem->Release(); } } pFileOpen->Release(); } } CoUninitialize(); return hr; }
谢谢你的关注。祝您愉快。在C中使用COM(与C++相反)时,您必须执行类似于
pFileOpen->pvtable->Show(pFileOpen,hwnd)
(我可能拼错了pvtable
-我不记得确切的名称;请查看标题)。谢谢您的帮助。对它进行了一些挖掘,发现它是lpVtbl,因此最终它将类似于pFileOpen->lpVtbl->Show(pFileOpen,NULL)。