Last Updated 2005/08/02
API

SHBrowseForFolderでルートフォルダの指定


SHBrowseForFolder() にてルートフォルダを指定のフォルダにする方法.

BROWSEINFO 構造体の pidlRoot にフォルダを指定すればよい.
フォルダは ITEMIDLIST に変換する.

LPITEMIDLIST    ConvertPIDL( char *lpszPath ) // I :変換するパス
{
    ULONG       chEatan;
    ULONG       dwAttributes;
    OLECHAR     olePath[ MAX_PATH ];
    LPSHELLFOLDER   pDesktopFolder;
    LPITEMIDLIST    pidl;

    if( SUCCEEDED( SHGetDesktopFolder( &pDesktopFolder ) ) ) {
        MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, lpszPath, -1, 
                             olePath, MAX_PATH );
        if( FAILED( pDesktopFolder->lpVtbl->ParseDisplayName( 
                    pDesktopFolder, NULL, NULL, olePath, &chEatan, &pidl, 
                    &dwAttributes ) ) )
            pidl = NULL;
        pDesktopFolder->lpVtbl->Release( pDesktopFolder );
    }
    return( pidl );
}

この関数の戻り値を pidlRoot に指定すればよい.
参照
SHBrowseForFolder(フォルダ選択ダイアログ)
パスからからITEMIDLIST取得

2002/10/01


API