0

こんにちは、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」は参照によって変更されるべきではありませんか?なぜ空と表示されるのですか?

前もって感謝します。

4

1 に答える 1