SHBrowseForFolder をポップアップして正常に動作させていますが、タイトルを設定したいと思います。wchar_t* でなければならないことはわかっていますが、(wchar_t*)L"My Title" のような const を使用すると、タイトルが正しく表示されます。
しかし、文字列値を使用しようとすると、最初の文字「M」しか得られません。これは、ワイド文字列が新しいワイド文字列に再度変換され、各文字がヌルで埋められたようなものです。
Winapi::Shlobj::BROWSEINFO bi = {0};
bi.hwndOwner = Handle;
bi.ulFlags = BIF_NEWDIALOGSTYLE | BIF_EDITBOX | BIF_BROWSEFORCOMPUTER;
bi.lpszTitle = String("My Title").w_str(); // This only shows the 'M'
//bi.lpszTitle = (wchar_t*)"My Title"; // This shows the full string 'My Title'
LPITEMIDLIST pidl = SHBrowseForFolder((_browseinfoA*)&bi);
if ( pidl != 0 ) {
// free memory used
IMalloc *imalloc = 0;
if (SUCCEEDED(SHGetMalloc(&imalloc))) {
imalloc->Free(pidl);
imalloc->Release();
}
}
UnicodeStringのドキュメントには、すべての変換関数c_str()
がt_str()
あり、w_str()
すべてが a を返しますwchar_t*
が、宣言にはWideChar*
.
このコードを文字列と連携させる方法はありますか?