|
Filters
The information in this section applies to both Explorer-style and old style
Open and Save As dialog boxes.
You can provide filename filters to assist the user in limiting the filenames
that the dialog box displays. A filename filter consists of a pair of
null-terminated strings, a description and a pattern, one concatenated to the other. The
dialog box displays the description to let the user pick which filter to use;
and it uses the pattern to select the files to display.
To specify the filters, set the lpstrFilter member of the OPENFILENAME structure to point to a buffer that contains an array of filter string pairs.
The last string in the array must be followed by an extra null character.
A pattern string can be a combination of valid filename characters and the
asterisk (*). The asterisk is a wildcard that represents any combination of valid
filename characters. The dialog box displays only those files that match the
pattern. To specify multiple patterns for the same description, you must use a
semicolon (;) to separate the patterns. Note that space characters in the pattern
string can produce unexpected results.
The following code fragment specifies two filters. The filter with the
"Source" description has two patterns. If the user selects this filter, the dialog box
displays only files that have the .C and .CXX extensions.
OPENFILENAME ofn; // common dialog box structure
ofn.lpstrFilter = "Source\0*.C;*.CXX\0All\0*.*\0"
ofn.nFilterIndex = 1;
The nFilterIndex member of the OPENFILENAME structure specifies an index that indicates which filter the dialog box
initially uses. The first filter in the buffer has index 1, the second 2, and so on.
If the user changes the filter while using the dialog box, the nFilterIndex member is set to the index of the selected filter on return.
You can create a custom filter by setting the lpstrCustomFilter member to the address of a buffer that contains a single filter, and by
setting the nMaxCustFilter member to the size of the buffer, in characters or bytes. The dialog box
always places the custom filter at the beginning of the list of filters and, on
return, always updates the pattern part of the filter with the pattern from the
filter selected by the user.
For Explorer-style dialog boxes, the default extension may change if the user
selects a different filter. If the user selects a filter whose first pattern is
of the form *.xxx (that is, the extension does not include a wildcard character), the dialog
box uses xxx as the default extension. This occurs only if you specified a default
extension in the lpstrDefExt member of the OPENFILENAME structure. For example, if the user selects the "Source\0*.C;*.CXX\0" filter,
the default extension changes to "C". However, if you had defined the filter
as "Source\0*.C*\0", the default extension would not change because the
extension includes a wildcard.
Related Links
Software for Delphi and C++ Builder developers
Software for Visual Studio .NET developers
Software for Visual Basic 6 developers
Delphi Tips&Tricks
MegaDetailed.NET
TMS Scripter Studio Pro components for Delphi/C++Builder
More Online Helps
Win32 Multimedia Programmer's Reference (mmedia.hlp)
OLE Programmer's Reference (ole.hlp)
Microsoft Windows Pen API Programmer's Reference (penapi.hlp)
Microsoft Windows Sockets 2 Reference (sock2.hlp)
Microsoft Windows Telephony API (TAPI) Programmer's Reference (tapi.hlp)
Unix Manual Pages
|