在MFC中,是否有打開文件夾對話框?也就是說,不是選擇文件名,而是選擇文件夾名稱?理想情況下,我希望它是Visual Studio在瀏覽「項目位置」(創建新項目時)時的工作方式,它看起來非常像普通的文件對話框。但如果前者不存在,我可以使用vertical tree類型的接口之一。MFC打開文件夾對話框
0
A
回答
4
此代碼將爲您打開一個打開的文件夾對話框(這是從網上的某處獲取的,但我不知道在哪裏)。
CString szSelectedFolder = _T("");
// This is the recommended way to select a directory
// in Win95 and NT4.
BROWSEINFO bi;
memset((LPVOID)&bi, 0, sizeof(bi));
TCHAR szDisplayName[_MAX_PATH];
szDisplayName[0] = '\0';
bi.hwndOwner = GetSafeHwnd();
bi.pidlRoot = NULL;
bi.pszDisplayName = szDisplayName;
bi.lpszTitle = _T("Select a folder");
bi.ulFlags = BIF_RETURNONLYFSDIRS;
// Set the callback function
bi.lpfn = BrowseCallbackProc;
LPITEMIDLIST pIIL = ::SHBrowseForFolder(&bi);
TCHAR szReturnedDir[_MAX_PATH];
BOOL bRet = ::SHGetPathFromIDList(pIIL, (TCHAR*)&szReturnedDir);
if (bRet)
{
if (szReturnedDir != _T(""))
{
szSelectedFolder = szReturnedDir;
}
LPMALLOC pMalloc;
HRESULT HR = SHGetMalloc(&pMalloc);
pMalloc->Free(pIIL);
pMalloc->Release();
}
,你還必須實現這個回調函數:
TCHAR szInitialDir[_MAX_PATH];
// Set the initial path of the folder browser
int CALLBACK BrowseCallbackProc(HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
// Look for BFFM_INITIALIZED
if (uMsg == BFFM_INITIALIZED)
{
SendMessage(hWnd, BFFM_SETSELECTION, TRUE, (LPARAM)szInitialDir);
}
return 0;
}
+0
取而代之的是memset的,我更喜歡BROWSEINFO bi = {0}; – 2009-10-15 15:34:46
+0
這並不完全是我所追求的,但這是我不得不使用的 - 看起來不存在沒有太多工作的替代方案。 – Smashery 2009-11-05 01:37:20
相關問題
- 1. Android:打開文件夾對話框
- 2. 電子 - 打開文件夾對話框
- 3. MFC中的打開對話框C++
- 4. 在std :: thread中打開MFC對話框
- 5. 打開文件對話框
- 6. 打開文件對話框
- 7. 打開文件對話框
- 8. 打開文件對話框的文件夾瀏覽器對話框
- 9. 「打開文件」對話框中的默認文件夾位置
- 10. 如何使用打開文件對話框,選擇文件夾
- 11. 從打開文件對話框獲取文件夾
- 12. 打開文件對話框不開放
- 13. 如何使用打開文件對話框打開文件
- 14. 打開文件對話框並打開不同的文件
- 15. 向用戶詢問文件夾(打開瀏覽對話框)
- 16. 以編程方式打開「文件夾選項」對話框
- 17. 如何在JavaScript中打開文件夾對話框
- 18. 如何在vscode中打開文件夾選取器對話框?
- 19. C#打開文件對話框
- 20. ASP.NET中的「打開文件」對話框
- 21. 用jquery打開html文件對話框
- 22. 嵌入文件打開對話框
- 23. 打開文件選擇對話框
- 24. 打開文件對話框Asp.Net
- 25. 打開文件對話框不顯示
- 26. 打開/保存文件對話框
- 27. 打開文件對話框問題FSI
- 28. 打開文件對話框Windows API
- 29. Android:打開文件對話框
- 30. Visual Basic打開文件對話框
見:http://stackoverflow.com/questions/1304784/cfiledialog-browse-folders – 2009-10-15 04:06:49