Benutzerdefinierte Vorlagen-Explorer-Stil

Um zusätzliche Steuerelemente für eine Explorer-Stil Öffnen oder Speichern unter im Dialogfeld definieren, verwenden Sie die OPENFILENAME -Struktur zum Angeben einer Vorlage für ein Kind-Dialogfeld, das weitere Steuerelemente enthält. Wenn Ihr Kind Dialogfeldvorlage eine Ressource in einer Anwendung oder Dynamic-Link Bibliothek ist, legen Sie das OFN_ENABLETEMPLATE-Flag in den Flags und verwenden Sie hInstance und LpTemplateName Member der Struktur, um den Modul und Ressource-Namen identifizieren. Wenn die Vorlage bereits im Speicher vorhanden ist, legen Sie das OFN_ENABLETEMPLATEHANDLE-Flag und verwenden Sie den hInstance -Member, um das Speicherobjekt zu identifizieren, das die Vorlage enthält. Wenn ein Kind Dialogfeldvorlagen für ein Dialogfeld mit einer Explorer-Stil bereitstellen, müssen Sie auch das OFN_EXPLORER-Flag festlegen; Andernfalls übernimmt das System, dass Sie eine Ersatz-Vorlage für ein im alten Stil Dialogfeld bereitstellen. In der Regel, wenn Sie zusätzliche Steuerelemente bereitstellen, müssen Sie auch eine Explorer-Stil hook-Prozedur zum Verarbeiten von Nachrichten für die neuen Steuerelemente bereitstellen.

Sie können Ihr Kind Dialogfeld Feld Vorlage erstellen, wie Sie jede andere Vorlage, außer dass Sie den WS_CHILD und WS_CLIPSIBLINGS-Stil angeben müssen und sollten die Stile DS_3DLOOK und DS_CONTROL angeben. Das System erfordert das Format WS_CHILD, da Ihre Vorlage einen Kind-Dialog im Dialogfeld Öffnen oder Speichern als Standard definiert. Der WS_CLIPSIBLINGS-Stil wird sichergestellt, dass das Dialogfeld Kind keines der Steuerelemente im Dialogfeld Standard übermalen. DS_3DLOOK Stil stellt sicher, dass die Darstellung der Steuerelemente im Dialogfeld Kind konsistent mit den Steuerelementen im Dialogfeld Standard ist. Der DS_CONTROL-Stil stellt sicher, dass der Benutzer die Registerkarte und andere Navigationstasten verwenden, um zwischen alle Steuerelemente, Standard oder Benutzerdefiniert, in das benutzerdefinierte Dialogfeld verschieben.

Um Platz für die neuen Steuerelemente zu machen, wird das System das Standarddialogfeld von Breite und Höhe des benutzerdefinierten Dialogfeldes erweitert. Standardmäßig sind alle Steuerelemente im benutzerdefinierten Dialogfeld unten positioniert die Steuerelemente im Dialogfeld Standard. Allerdings können Sie diese Standardeinstellung Positionierung durch ein Steuerelement statischer Text in Ihre benutzerdefinierte Dialogfeldvorlage einschließlich und Zuweisen des Steuerelement-ID-Wertes von stc32 überschreiben. (Dieser Wert wird in der DLG definiert.H Header-Datei.) In diesem Fall verwendet das System die Kontrolle als der Bezugspunkt für die Bestimmung der neuen Steuerelemente positionieren. Alle neuen Steuerelemente oben und auf der linken Seite des stc32-Steuerelements positioniert sind den gleichen Betrag oberhalb und Links von den Steuerelementen im Dialogfeld Standard. Neue Steuerelemente unten und auf der rechten Seite des Steuerelements stc32 sind unten und rechts von der Standardsteuerelemente positioniert. Im Allgemeinen ist jedes neues Steuerelement positioniert, so dass es die gleiche Position relativ zu den Standardsteuerelementen wie es musste das stc32-Steuerelement. Um Raum für diese neue Steuerelemente machen, fügt das System Platz für Links, rechts, unten und oben im Dialogfeld Standard, nach Bedarf.

Das System erfordert die Hook-Prozedur zum Verarbeiten aller Nachrichten, die für das benutzerdefinierte Dialogfeld bestimmt und deshalb die gleichen Fenstermeldungen, die Hook-Prozedur als zu jeder anderen Dialogfeld im Feld Prozedur sendet. Beispielsweise erhält die Hook-Prozedur WM_COMMAND -Nachrichten der Benutzer klickt auf Button-Steuerelemente in das benutzerdefinierte Dialogfeld. Die Hook-Prozedur ist verantwortlich für diese Steuerelemente initialisieren und Werte aus den Steuerelementen abrufen, wenn das Dialogfeld geschlossen wird. Beachten Sie, dass wenn die Hook-Prozedur die WM_INITDIALOG -Meldung empfängt, das System noch nicht die Steuerelemente in ihre endgültigen Position verschoben hat.

Die Standard-Dialogfeldprozedur verarbeitet Nachrichten für alle Steuerelemente im Dialogfeld Standard, aber die Hook-Prozedur empfängt die WM_NOTIFY -Benachrichtigungen für Benutzeraktionen auf diese Steuerelemente wie im Explorer-Stil-Hook-Prozeduren beschrieben.