你好我正在使用與MS VC++ 2010的Windows API的Windows應用程序,並選擇文件夾,我有以下代碼:的SHBrowseForFolder沒有參考
BOOL BrowseFolder(TCHAR *result)
{
BROWSEINFO brwinfo = { 0 };
brwinfo.lpszTitle = _T("Select Your Source Directory");
brwinfo.hwndOwner = hWnd;
LPITEMIDLIST pitemidl = SHBrowseForFolder (&brwinfo);
if (pitemidl == 0) return FALSE;
// get the full path of the folder
TCHAR path[MAX_PATH];
if (SHGetPathFromIDList (pitemidl, path)) result = path;
IMalloc *pMalloc = 0;
if (SUCCEEDED(SHGetMalloc(&pMalloc)))
{
pMalloc->Free(pitemidl);
pMalloc->Release();
}
::MessageBox(hWnd, result, "input", MB_OK);
::MessageBox(hWnd, inputFolder, "input", MB_OK); // Reference Test
return TRUE;
}
所以,它打開打開瀏覽文件夾對話框,將所選文件夾字符串保存在參考參數「result」中,如果一切正常,則返回true。
後來我打電話:
BrowseFolder(inputFolder);
,當我嘗試打印出「inputFolder」的內容,它顯示空白(inputFolder是一個全局變量TCHAR* inputFolder
)
正如你可以在看BrowseFolder定義我發送兩個消息框一個爲「結果」,另一個爲「inputFolder」(最後一個顯示爲空)
所以我的問題是..如果我打電話:BrowseFolder(inputFolder);
不應該「inputFolder」參考?它爲什麼顯示爲空?
在此先感謝。
是的,這是,我改變了指針的參考,我沒有看到它。上面的代碼工作,但我不得不將inputFolder全局變量更改爲MAX_PATH固定大小的數組而不是指針。非常感謝 –