2

Unicode 文字を使用して TCHAR を char* に変換する方法。私は次のコードを使用します

//BROWSE FOLDER - Opens a browse folder dialog.
char* browse_folder(void)
{
char *selected_path = NULL;

TCHAR path[MAX_PATH];
BROWSEINFO bi = { 0 };

bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);

if (pidl != 0)
{
    // get the name of the folder and put it in path
    SHGetPathFromIDList(pidl, path);

    //Set the current directory to path
    SetCurrentDirectory(path);

    // free memory used
    IMalloc* imalloc = 0;
    if (SUCCEEDED(SHGetMalloc(&imalloc)))
    {
        imalloc->Free(pidl);
        imalloc->Release();
    }
    //selected_path = ;
    USES_CONVERSION;
    selected_path = T2A(path);
}
}

Visual Studio プロジェクト設定で Unicode を有効にしました。この関数を使用してフォルダーを参照しています。パス (TCHAR) に正確な値を取得しています。これを char* に変換すると、Unicode 文字が (?????) 記号として置き換えられます。

4

1 に答える 1

0

プロジェクトは Unicode 文字をサポートしているため、WideCharToMultiByte() を使用して char* に変換する必要があります。それを使ってみてください。

于 2013-03-22T11:29:26.777 に答える