CWnd::DlgDirList
更新 : 2007 年 11 月
リスト ボックスにファイル リストまたはディレクトリ リストを設定します。
int DlgDirList(
LPTSTR lpPathSpec,
int nIDListBox,
int nIDStaticPath,
UINT nFileType
);
パラメータ
lpPathSpec
パスまたはファイル名を表す null で終わる文字列へのポインタ。DlgDirList ではこの文字列を変更するので、変更結果を格納するために十分な長さを持つ必要があります。詳細については、次の「解説」を参照してください。nIDListBox
リスト ボックスの識別子を指定します。nIDListBox が 0 のときは、DlgDirList はリスト ボックスが存在しないと判断し、データの転送は行いません。nIDStaticPath
現在のドライブとフォルダの表示のために使われるスタティック テキスト コントロールの識別子を指定します。nIDStaticPath が 0 のとき、DlgDirList 関数はそのようなテキスト コントロールはないものと仮定します。nFileType
表示されるファイルの属性を指定します。次の値を任意に組み合わせて使用できます。DDL_READWRITE ほかの属性を持たない読み書き可能なデータ ファイル。
DDL_READONLY 読み取り専用ファイル。
DDL_HIDDEN 隠しファイル。
DDL_SYSTEM システム ファイル。
DDL_DIRECTORY ディレクトリ。
DDL_ARCHIVE アーカイブ。
DDL_POSTMSGSLB_DIR フラグ。LB_DIR フラグが設定されている場合、Windows は DlgDirList で生成されたメッセージをアプリケーション キューに置きます。それ以外の場合は、ダイアログ ボックスに直接送られます。
DDL_DRIVES ドライブ。DDL_DRIVES フラグが設定されている場合は、DDL_EXCLUSIVE フラグが自動的に設定されます。そのためドライブとファイルを含んだフォルダ リストを作成するためには DlgDirList を二度呼び出す必要があります。一度目は DDL_DRIVES フラグを設定して呼び出し、二度目はリストの残りを得るためのフラグを設定して呼び出します。
DDL_EXCLUSIVE 排他ビット。排他ビットが設定されている場合は、指定されたタイプのファイルだけが一覧されます。それ以外の場合は、指定されたファイルと通常のファイルが一覧されます。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
DlgDirList 関数は、リスト ボックスに LB_RESETCONTENT メッセージおよび LB_DIR メッセージを送信します。nIDListBox で指定されたリスト ボックスに、lpPathSpec で指定されたパスに一致するすべてのファイル名が格納されます。
パラメータ lpPathSpec は次の形式で指定します。
[drive:] [ [\u]directory[\idirectory]...\u] [filename]
この例では、drive はドライブを表す文字、directory は正しいフォルダ名、filename は少なくとも 1 つのワイルドカード文字を含むファイル名である必要があります。ワイルドカードは、任意の文字に一致する疑問符 (?) と任意の数の文字に一致するアスタリスク (*) が使えます。
lpPathSpec に長さが 0 の文字列を指定したとき、またはファイル指定を含まないフォルダ名のみを指定したときは、文字列は "*.*" に変換されます。
lpPathSpec にドライブ名かフォルダ名、またはその両方が含まれている場合、リスト ボックスに格納される前に現在のドライブとフォルダが指定されたドライブとフォルダに変更されます。nIDStaticPath で指定されたテキスト コントロールも新しいドライブやフォルダに変更されます。
リスト ボックスに格納された後、lpPathSpec は、パス名のドライブやフォルダの部分を取り除いたものに変更されます。
使用例
// If pDialog points to a CDialog object with a list box
// with the identifier IDC_DIRLIST, this call will populate
// the box with only the non-hidden subdirectories in the root
// directory of the C:\ drive.
TCHAR path[MAX_PATH];
_tcscpy_s(path, MAX_PATH, _T("C:\\"));
pDialog->DlgDirList(path, IDC_DIRLIST, 0, DDL_EXCLUSIVE | DDL_DIRECTORY);
必要条件
ヘッダー : afxwin.h