フォルダ選択画面で遊んでみました。
BOOL GetOpenDirectoryName( HWND hwndOwner, LPCTSTR lpszDefaultFolder, LPTSTR lpszBuffer, DWORD dwBufferSize )
{
BROWSEINFO bi;
ZeroMemory( &bi, sizeof( BROWSEINFO ));
bi.hwndOwner = hwndOwner;
bi.lpfn = NULL;
bi.lParam = (LPARAM)lpszDefaultFolder; // デフォルトで選択させておくフォルダを指定
bi.lpszTitle = L"フォルダを選択してください"; // タイトルの指定
LPITEMIDLIST pidlRoot; // ブラウズのルートPIDL
pidlRoot = ::ILCreateFromPath(L"c:"); //フォルダ名がPIDLの取得
bi.pidlRoot = pidlRoot; //2021/03/28
bi.ulFlags = BIF_NEWDIALOGSTYLE |BIF_BROWSEINCLUDEFILES |BIF_EDITBOX;
LPITEMIDLIST pidl = SHBrowseForFolder( &bi ); // フォルダダイアログの起動
if( pidl )
{
// 選択されたフォルダ名を取得
wchar_t szSelectedFolder[4096];
SHGetPathFromIDList( pidl, szSelectedFolder );
::CoTaskMemFree( pidl );
if( (DWORD)wcslen(szSelectedFolder) < dwBufferSize )
{
wcsncpy_s( lpszBuffer, dwBufferSize, szSelectedFolder, _TRUNCATE );
// フォルダが選択された
return TRUE;
}
}
// フォルダは選択されなかった
return FALSE;
}