您好,我正在使用带有 MS VC++ 2010 的 Windows API 开发 Windows 应用程序,并且我有以下用于选择文件夹的代码:
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”不应该通过引用来修改吗?为什么显示为空?
提前致谢。