CWnd::DlgDirListComboBox

Fills the list box of a combo box with a file or directory listing.

int DlgDirListComboBox( 
   LPTSTR lpPathSpec, 
   int nIDComboBox, 
   int nIDStaticPath, 
   UINT nFileType  
);

Parameters

  • lpPathSpec
    Points to a null-terminated string that contains the path or filename. DlgDirListComboBox modifies this string, so this data should not be in the form of a string literal. See the following "Remarks" section.

  • nIDComboBox
    Specifies the identifier of a combo box in a dialog box. If nIDComboBox is 0, DlgDirListComboBox assumes that no combo box exists and does not attempt to fill one.

  • nIDStaticPath
    Specifies the identifier of the static-text control used to display the current drive and directory. If nIDStaticPath is 0, DlgDirListComboBox assumes that no such text control is present.

  • nFileType
    Specifies DOS file attributes of the files to be displayed. It can be any combination of the following values:

    • DDL_READWRITE   Read-write data files with no additional attributes.

    • DDL_READONLY   Read-only files.

    • DDL_HIDDEN   Hidden files.

    • DDL_SYSTEM   System files.

    • DDL_DIRECTORY   Directories.

    • DDL_ARCHIVE   Archives.

    • DDL_POSTMSGS   CB_DIR flag. If the CB_DIR flag is set, Windows places the messages generated by DlgDirListComboBox in the application's queue; otherwise, they are sent directly to the dialog-box procedure.

    • DDL_DRIVES   Drives. If the DDL_DRIVES flag is set, the DDL_EXCLUSIVE flag is set automatically. Therefore, to create a directory listing that includes drives and files, you must call DlgDirListComboBox twice: once with the DDL_DRIVES flag set and once with the flags for the rest of the list.

    • DDL_EXCLUSIVE   Exclusive bit. If the exclusive bit is set, only files of the specified type are listed; otherwise normal files and files of the specified type are listed.

Return Value

Specifies the outcome of the function. It is nonzero if a listing was made, even an empty listing. A 0 return value implies that the input string did not contain a valid search path.

Remarks

DlgDirListComboBox sends CB_RESETCONTENT and CB_DIR messages to the combo box. It fills the list box of the combo box specified by nIDComboBox with the names of all files that match the path given by lpPathSpec.

The lpPathSpec parameter has the following form:

[drive:] [ [\u]directory[\idirectory]...\u] [filename]

In this example, drive is a drive letter, directory is a valid directory name, and filename is a valid filename that must contain at least one wildcard. The wildcards are a question mark (?), which means match any character, and an asterisk (*), which means match any number of characters.

If you specify a zero-length string for lpPathSpec, the current directory will be used and lpPathSpec will not be modified. If you specify only a directory name but do not include any file specification, the string will be changed to "*".

If lpPathSpec includes a drive and/or directory name, the current drive and directory are changed to the designated drive and directory before the list box is filled. The text control identified by nIDStaticPath is also updated with the new drive and/or directory name.

After the combo-box list box is filled, lpPathSpec is updated by removing the drive and/or directory portion of the path.

Example

// 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.   

Requirements

Header: afxwin.h

See Also

Concepts

CWnd Members

Reference

CWnd Class

Hierarchy Chart

CWnd::DlgDirList

CWnd::DlgDirSelect

DlgDirListComboBox