Explorer-Style Custom Templates
To define additional controls for an Explorer-style Open or Save As dialog
box, use the
OPENFILENAME structure to specify a template for a child dialog box that contains the
additional controls. If your child dialog template is a resource in an application
or dynamic-link library, set the OFN_ENABLETEMPLATE flag in the
Flags member and use the
hInstance and
lpTemplateName members of the structure to identify the module and resource name. If the
template is already in memory, set the OFN_ENABLETEMPLATEHANDLE flag and use the
hInstance member to identify the memory object that contains the template. When
providing a child dialog template for an Explorer-style dialog box, you must also set
the OFN_EXPLORER flag; otherwise, the system assumes you are providing a
replacement template for an old-style dialog box. Typically, if you provide
additional controls, you must also provide an
Explorer-style hook procedure to process messages for the new controls.
You can create your child dialog box template as you do any other template,
except that you must specify the WS_CHILD and WS_CLIPSIBLINGS styles and should
specify the DS_3DLOOK and DS_CONTROL styles. The system requires the WS_CHILD
style because your template defines a child dialog of the default Open or Save As
dialog box. The WS_CLIPSIBLINGS style ensures that the child dialog box does
not paint over any of the controls in the default dialog box. The DS_3DLOOK
style makes sure that the appearance of the controls in the child dialog box is
consistent with the controls in the default dialog box. The DS_CONTROL style makes
sure that the user can use the TAB and other navigation keys to move between all controls, default or custom, in
the customized dialog box.
To make room for the new controls, the system expands the default dialog box
by the width and height of the custom dialog box. By default, all controls from
the custom dialog box are positioned
below the controls in the default dialog box. However, you can override this
default positioning by including a static text control in your custom dialog box
template and assigning it the control identifier value of stc32. (This value is
defined in the DLG.H header file.) In this case, the system uses the control as
the point of reference for determining where to position the new controls. All
new controls above and to the left of the stc32 control are positioned the same
amount above and to the left of the controls in the default dialog box. New
controls below and to the right of the stc32 control are positioned below and to
the right of the default controls. In general, each new control is positioned so
that it has the same position relative to the default controls as it had to the
stc32 control. To make room for these new controls, the system adds space to
the left, right, bottom, and top of the default dialog box as needed.
The system requires the hook procedure to process all messages intended for
the custom dialog box and therefore sends the same window messages to the hook
procedure as to any other dialog box procedure. For example, the hook procedure
receives
WM_COMMAND messages when the user clicks on button controls in the custom dialog box.
The hook procedure is responsible for initializing these controls and retrieving
values from the controls when the dialog box is closed. Note that when the hook
procedure receives the
WM_INITDIALOG message, the system has not yet moved the controls to their final positions.
The default dialog box procedure handles messages for all the controls in the
default dialog box, but the hook procedure receives the
WM_NOTIFY notification messages for user actions on these controls as described in
Explorer-Style Hook Procedures.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database