一丶打开文件

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();
	}

相关文章:

  • 2022-12-23
  • 2021-10-19
  • 2022-02-12
  • 2021-08-27
  • 2022-12-23
  • 2022-02-02
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-25
  • 2021-12-01
  • 2021-09-29
  • 2022-12-23
  • 2021-08-25
  • 2021-11-28
  • 2022-12-23
相关资源
相似解决方案