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