SHBrowseForFolder(A)

ユーザーにシェルフォルダーを選択させるためのダイアログボックスを表示します。

LPITEMIDLIST SHBrowseForFolderA(
    PBROWSEINFO  pbi       // BROWSEINFO構造体
);

SHELL32.DLL

引数

pbi

ダイアログボックスの表示に使用される情報を格納したBROWSEINFO構造体のアドレスを指定します。

戻り値

フォルダが選択されると、シェルネームスペースのルート(デスクトップフォルダ)からの選択されたフォルダの相対的な位置を指定するアイテムIDリスト(ITEMIDLIST構造体)へのポインタ(PIDL)が返ります。

ダイアログボックスのキャンセルボタンが押された場合は0 (NULL) が返ります。

解説

この関数を呼び出すアプリケーションは、COINIT_APARTMENTTHREADEDフラグを指定してCoInitializeEx関数を呼び出すことでCOMを初期化しておかなければなりません。CoInitializeEx関数にCOINIT_MULTITHREADEDフラグを渡してCOMを初期化している場合、BIF_NEWDIALOGSTYLEまたはBIF_USENEWUIを指定してのSHBrowseForFolder関数の呼び出しは失敗してしまうため、注意が必要です。COMを初期化するのにCoInitialize関数またはOleInitialize関数を使うこともできます。

呼び出し側アプリケーションは、SHGetMalloc関数によって取得できるシェルメモリアロケータのIMallocインターフェースからFreeメソッドを呼び出すことにより、取得したPIDLのメモリ領域を解放しなければなりません。

2種類のスタイルのダイアログボックスが利用できます。従来のスタイルのダイアログボックスはサイズ変更できません。新しいスタイルのダイアログボックスを指定するにはBROWSEINFO構造体のulFlagsメンバにBIF_USENEWUIフラグを指定します。これにより、ダイアログボックスへのドラッグアンドドロップ、フォルダの再整理、ショートカットメニュー、新しいフォルダ作成、削除、その他のショートカットメニューコマンドなどの機能を追加することができます。初期状態では従来のダイアログボックスより大きいですが、ユーザーがダイアログボックスのサイズを変更することができます。

対応情報

Shell32.dll Version 4.00 以降

Windows 95 以降 / Windows NT 4.0 以降