こんにちは、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」用の 2 つのメッセージ ボックスを送信します (最後の 1 つには空白が表示されます)。
だから私の質問は..私が電話した場合:BrowseFolder(inputFolder);
「inputFolder」は参照によって変更されるべきではありませんか?なぜ空と表示されるのですか?
前もって感謝します。