一丶打开文件
CoInitialize(NULL);
IFileOpenDialog * pOpenFileDlg = NULL;
HRESULT hr = S_FALSE;
hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_ALL, IID_IFileOpenDialog, (LPVOID*)&pOpenFileDlg);
if (SUCCEEDED(hr))
{
hr = pOpenFileDlg->Show(NULL);
if (SUCCEEDED(hr))
{
//从对话框中获取文件名
IShellItem* pItem;
hr = pOpenFileDlg->GetResult(&pItem);
if (SUCCEEDED(hr))
{
//结果成功,获取名字.
PWSTR pszFilePath = NULL;
hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath);
if (SUCCEEDED(hr))
{
//进行你的代码操作. pszFilePath = 打开的路径
CString str(pszFilePath);
m_ChoosPluginEdt.SetWindowTextW(str);
CoTaskMemFree(pszFilePath);//释放内存
}
pItem->Release();
}
}
pOpenFileDlg->Release();//释放内存
}
CoUninitialize();
//保存文件用 IFileSaveDialog 用到再写
获取选择的文件夹
CoInitialize(nullptr);
IFileDialog* pfd = NULL;
HRESULT hr = CoCreateInstance(
CLSID_FileOpenDialog,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pfd));
if (SUCCEEDED(hr))
{
wstring result;
pfd->SetOptions(FOS_PICKFOLDERS | FOS_FORCEFILESYSTEM);
if (pfd->Show(NULL) == S_OK)
{
IShellItem* pitem = NULL;
if (pfd->GetResult(&pitem) == S_OK && pitem)
{
LPWSTR resultptr = NULL;
if (pitem->GetDisplayName(SIGDN_FILESYSPATH, &resultptr) == S_OK && resultptr)
{
result = resultptr; //获得文件夹
CString str(result.c_str());
edt->SetText(str.GetBuffer());
}
pitem->Release();
}
}
CoUninitialize();
pfd->Release();
}