Enthält Informationen, die von den Funktionen GetOpenFileName und GetSaveFileName genutzt werden, um ein "Öffnen"- oder "Speichern unter"-Dialogfenster zu initialisieren
Global Const $tagOPENFILENAME = "dword StructSize;hwnd hwndOwner;hwnd hInstance;ptr lpstrFilter;ptr lpstrCustomFilter;" & _
"dword nMaxCustFilter;dword nFilterIndex;ptr lpstrFile;dword nMaxFile;ptr lpstrFileTitle;int nMaxFileTitle;" & _
"ptr lpstrInitialDir;ptr lpstrTitle;dword Flags;short nFileOffset;short nFileExtension;ptr lpstrDefExt;ptr lCustData;" & _
"ptr lpfnHook;ptr lpTemplateName;ptr pvReserved;dword dwReserved;dword FlagsEx"
| StructSize | Bestimmt die Größe der Struktur, in Bytes. |
| hwndOwner | Handle zu dem Fenster, das dieses Dialogfenster besitzt. Dieses Mitglied kann irgendein gültiges Fensterhandle sein oder NULL, wenn das Dialogfenster keinen Besitzer hat. |
| hInstance | Wenn das $OFN_ENABLETEMPLATEHANDLE-Flag im Flags-Mitglied gesetzt ist, dann ist hInstance ein Speicherobjekt, das eine Vorlage für ein Dialogfenster enthält. Wenn das $OFN_ENABLETEMPLATE-Flag gesetzt ist, dann ist hInstance ein Modul, das eine Vorlage für ein Dialogfenster enthält, benannt im lpTemplateName-Mitglied. Ist keines dieser beiden Flags gesetzt, wird dieses Mitglied ignoriert. Wenn das $OFN_EXPLORER-Flag gesetzt ist, benutzt das System eine definierte Vorlage, um ein Dialogfenster zu erzeugen, das ein Child des standardmäßigen Explorer-Style-Dialogfensters ist. Wenn das $OFN_EXPLORER-Flag nicht gesetzt ist, benutzt das System die Vorlage, um ein Old-Style-Dialogfenster zu erzeugen, welches das standardmäßige Dialogfenster ersetzt. |
| lpstrFilter | Zeiger auf einen Puffer, der Paare von NULL-terminierten Filter-Strings enthält. Die letzte String in dem Puffer muss mit zwei NULL-Zeichen beendet werden. |
| lpstrCustomFilter | Zeiger auf einen statischen Puffer, der ein Paar von NULL-terminierten Filter-Strings enthält, um den vom Benutzer gewählten Filter aufzubewahren. Der erste String ist der Anzeige-String, der den individuellen Filter beschreibt, und der zweite String ist das Filtermuster, das vom Benutzer gewählt wurde. Das erste Mal, wenn Ihre Anwendung das Dialogfenster erzeugt, legen Sie den ersten String fest, der irgendein nicht-leerer String sein kann. Wenn der Benutzer eine Datei ausgewählt hat, kopiert die Dialogbox das Filtermuster in den zweiten String. Das aufbewahrte Filtermuster kann eines der Filtermuster sein, die im lpstrFilter-Puffer festgelegt wurden, oder es kann ein vom Benutzer eingegebenes Filtermuster sein. Das System nutzt diese Strings, um das benutzerdefinierte Filtermuster zu initialisieren, wenn das Dialogfenster das nächste Mal erzeugt wird. Ist das nFilterIndex-Mitglied gleich 0, benutzt das Dialogfenster den individuellen Filter. Ist dieses Mitglied gleich NULL, bewahrt das Dialogfenster keine benutzerdefinierten Filtermuster auf. Ist dieses Mitglied ungleich 0, muss der Wert des nMaxCustFilter-Mitglieds die Größe des Puffers, auf den lpstrCustomFilter zeigt, in TCHARs angeben. Für die ANSI-Version ist dies die Anzahl der Bytes; für die Unicode-Version ist es die Anzahl der Zeichen. |
| nMaxCustFilter | Bestimmt die Größe des Puffers, in TCHARs, der in lpstrCustomFilter bezeichnet ist. Für die ANSI-Version ist dies die Anzahl der Bytes; für die Unicode-Version ist es die Anzahl der Zeichen. Dieser Puffer sollte mindestens 40 Zeichen lang sein. Dieses Mitglied wird ignoriert, wenn lpstrCustomFilter gleich NULL ist oder auf einen NULL-String zeigt. |
| nFilterIndex | Bestimmt den Index des aktuell gewählten Filters im "Dateityp"-Input-Control. Der Puffer, auf den lpstrFilter verweist, enthält Paare von Strings, die den Filter definieren. Das erste String-Paar hat einen Indexwert von 1, das zweite Paar 2, und so weiter. Ein Index von 0 weist auf den individuellen Filter hin, der in lpstrCustomFilter angegeben ist. Es kann ein Index bei der Eingabe bestimmt werden, um auf Start-Filterbeschreibung und -Filtermuster für das Dialogfenster hinzuweisen. Wenn der Benutzer eine Datei auswählt, gibt nFilterIndex den Index des aktuell angezeigten Filters zurück. Ist nFilterIndex gleich 0 und lpstrCustomFilter ist NULL, benutzt das System den ersten Filter aus dem lpstrFilter-Puffer. Sind alle drei Mitglieder gleich 0 oder NULL, benutzt das System keinen Filter und zeigt keine Dateien im List-Control des Dialogfensters an. |
| lpstrFile | Zeiger auf einen Puffer, der einen Dateinamen enthält, welcher dazu genutzt wird, das "Dateiname"-Input-Control zu initialisieren. Das erste Zeichen in diesem Puffer muss NULL sein, wenn keine Initialisierung nötig ist. Wenn die Funktion _WinAPI_GetOpenFileName oder _WinAPI_GetSaveFileName erfolgreich ausgefüht wurde, enthält dieser Puffer den Laufwerksbezeichner, Pfad, Dateiname und -Erweiterung der ausgewählten Datei. Ist das $OFN_ALLOWMULTISELECT-Flag gesetzt und der Benutzer wählt mehrere Dateien aus, enthält der Puffer das aktuelle Verzeichnis gefolgt von den Dateinamen der gewählten Dateien. Für Explorer-Style-Dialogfenster sind die Strings für Verzeichnis und Dateinamen durch NULL-Zeichen getrennt, mit einem zusätzlichen NULL-Zeichen nach dem letzten Dateinamen. Für Old-Style-Dialogfenster sind die Strings durch Leerzeichen getrennt und die Funktion benutzt kurze Dateinamen für Dateien, deren Namen Leerzeichen enthalten. Wenn der Benutzer nur eine Datei auswählt, enthält der String lpstrFile keinen Trenner zwischen Pfad und Dateinamen. Wenn der Puffer zu klein ist, gibt die Funktion FALSE zurück und die _WinAPI_CommDlgExtendedError() Funktion gibt $FNERR_BUFFERTOOSMALL zurück. In diesem Falle enthalten die ersten zwei Bytes die benötigte Größe, in Bytes oder Zeichen (TCHARs). |
| nMaxFile | Bestimmt die Größe des Puffers, in TCHARs, auf den lpstrFile verweist. Für die ANSI-Version ist dies die Anzahl der Bytes; für die Unicode-Version ist es die Anzahl der Zeichen. Der Puffer muss groß genug sein, um den Pfad und den oder die Dateinamen-Strings aufzunehmen, inklusive abschliessender NULL-Zeichen. Die Funktionen _WinAPI_GetOpenFileName und _WinAPI_GetSaveFileName geben FALSE zurück, wenn der Puffer zu klein ist, um die Dateiinformation aufzunehmen. Dieser Puffer sollte mindestens 256 Zeichen lang sein. |
| lpstrFileTitle | Zeiger auf einen Puffer, der Dateiname und Erweiterung (ohne Pfadinformation) der ausgewählten Datei aufnimmt. Dieses Mitglied kann NULL sein. |
| nMaxFileTitle | Bestimmt die Größe des Puffers, in TCHARs, auf den lpstrFileTitle verweist. Für die ANSI-Version ist dies die Anzahl der Bytes; für die Unicode-Version ist es die Anzahl der Zeichen. Dieses Mitglied wird ignoriert, wenn lpstrFileTitle NULL ist. |
| lpstrInitialDir | Zeiger auf einen NULL-terminierten String, der das Startverzeichnis bestimmen kann. |
| lpstrTitle | Zeiger auf einen String, der in der Titelleiste des Dialogfensters platziert wird. Ist dieses Mitglied NULL, benutzt das System den Standardtitel ("Speichern" oder "Öffnen"). |
| Flags | Ein Satz von Bitflags, die genutzt werden können, um das Dialogfenster zu initialisieren. Wenn das Dialogfenster geschlossen wird und die Funktion zurückkehrt, setzt sie diese Flags, um auf die Eingabe des Benutzers zu deuten. Dieses Mitglied kann eine Kombination der folgenden Flags sein. $OFN_ALLOWMULTISELECT - Legt fest, dass die "Dateiname"-ListBox eine Mehrfachauswahl erlaubt. Ist zugleich das $OFN_EXPLORER-Flag gesetzt, benutzt das Dialogfenster das Explorer-Style-UI; andernfalls nutzt es das Old-Style-UI. $OFN_CREATEPROMPT - Wenn der Benutzer eine Datei angibt, die nicht existiert, dann bewirkt dieses Flag, dass das Dialogfenster den Benutzer um Erlaubnis fragt, die Datei zu erzeugen. Wenn der Benutzer auswählt, die Datei zu erzeugen, dann schliesst sich das Dialogfenster und die Funktion gibt den angegebenen Namen zurück; andernfalls bleibt das Dialogfenster geöffnet. Wenn dieses Flag mit dem $OFN_ALLOWMULTISELECT-Flag kombiniert wird, erlaubt das Dialogfenster dem Benutzer nur eine nicht-existierende Datei zu erzeugen. $OFN_DONTADDTORECENT : Verhindert, dass das System eine Verknüpfung zu der gewählten Datei im Dateisystem-Verzeichnis hinzufügt, welches die zuletzt verwendeten Dokumente des Benutzers enthält. $OFN_ENABLEHOOK - Aktiviert die Hook-Funktion, die im lpfnHook-Mitglied festgelegt ist. $OFN_ENABLEINCLUDENOTIFY : Veranlasst das Dialogfenster, CDN_INCLUDEITEM-Benachrichtigungen an die OFNHookProc-Hook-Prozedur zu senden, wenn der Benutzer ein Verzeichnis öffnet. Das Dialogfenster sendet für jedes Element in dem neu geöffneten Verzeichnis eine Benachrichtigung. Diese Nachrichten ermöglichen eine Steuerung, welche Elemente das Dialogfenster in der Verzeichnisliste anzeigt. $OFN_ENABLESIZING : Erlaubt es, die Größe des Explorer-Style-Dialogfensters mit der Maus oder der Tastatur zu verändern. Standardmäßig erlauben die "Öffnen"- und "Speichern unter"-Dialogfenster es, ihre Größe zu ändern, unabhängig davon, ob dieses Flag gesetzt ist. Dieses Flag wird nur benötigt, wenn eine Hook-Prozedur oder eine benutzerdefinierte Vorlage zur Verfügung gestellt werden soll. Das Old-Style-Dialogfenster erlaubt keine Größenveränderung. $OFN_ENABLETEMPLATE - Deutet darauf hin, dass das lpTemplateName-Mitglied ein Zeiger auf den Namen einer Dialogvorlagen-Ressource in dem Modul enthält, das in hInstance benannt ist. Ist das $OFN_EXPLORER Flag gesetzt, benutzt das System die angegebene Vorlage um ein Dialogfenster zu erzeugen, welches ein Child des standardmäßigen Explorer-Style-Dialogfensters ist. Ist das $OFN_EXPLORER Flag nicht gesetzt, benutzt das System die Vorlage um ein Old-Style-Dialogfenster zu erzeugen, welches das standardmäßige Dialogfenster ersetzt. $OFN_ENABLETEMPLATEHANDLE - Deutet darauf hin, dass das hInstance-Mitglied einen Datenblock kennzeichnet, der eine bereits geladene Dialogvorlage enthält. Das System ignoriert lpTemplateName, wenn dieses Flag gesetzt ist. Ist das $OFN_EXPLORER-Flag gesetzt, benutzt das System die angegebene Vorlage um ein Dialogfenster zu erzeugen, welches ein Child des standardmäßigen Explorer-Style-Dialogfensters ist. Ist das $OFN_EXPLORER-Flag nicht gesetzt, benutzt das System die Vorlage, um ein Old-Style-Dialogfenster zu erzeugen, welches das standardmäßige Dialogfenster ersetzt. $OFN_EXPLORER - Deutet darauf hin, dass jegliche benutzerdefinierten Anpassungen des "Öffnen"- oder "Speichern unter"-Dialogfensters, die neuen Explorer-Style-Methoden zum Anpassen nutzen. Standardmäßig nutzen die "Öffnen"- und "Speichern unter"-Dialogfenster das Explorer-Style-UI, unabhängig davon, ob dieses Flag gesetzt ist. Dieses Flag wird nur benötigt, wenn eine Hook-Prozedur oder eine benutzerdefinierte Vorlage zur Verfügung gestellt, oder das $OFN_ALLOWMULTISELECT-Flag gesetzt wird. Wenn das Old-Style-UI genutzt werden soll, lässt man das $OFN_EXPLORER-Flag weg und stellt eine Old-Style-Dialogvorlage als Ersatz oder eine Hook-Prozedur bereit. Wenn das Old-Style-UI genutzt werden soll und man benötigt keine benutzerdefinierte Dialogvorlage oder Hook-Prozedur, dann stellt man einfach eine Hook-Prozedur bereit, die immer FALSE zurückgibt. $OFN_EXTENSIONDIFFERENT - Gibt an, dass der Benutzer eine Dateinamenserweiterung eingetippt hat, die von der Erweiterung aus lpstrDefExt abweicht. Die Funktion nutzt dieses Flag nicht, wenn lpstrDefExt NULL ist. $OFN_FILEMUSTEXIST - Legt fest, dass der Benutzer nur Namen existierender Dateien in das "Dateiname"-Input-Control eintippen kann. Ist dieses Flag angegeben und der Benutzer gibt einen ungültigen Namen ein, zeigt die Dialogfenster-Prozedur eine Warnung in einer MessageBox an. Ist dieses Flag angegeben, wird das $OFN_PATHMUSTEXIST Flag ebenso benutzt. Dieses Flag kann in einem "Öffnen"-Dialogfenster genutzt werden. Es kann nicht mit einem "Speichern unter"-Dialogfenster genutzt werden. $OFN_FORCESHOWHIDDEN : Erzwingt die Anzeige von System- und versteckten Dateien, und ordnet sich somit den Benutzereinstellungen, ob versteckte Dateien angezeigt werden oder nicht, über. Jedoch wird eine Datei die als beides gekennzeichnet ist (System und versteckt) nicht angezeigt. $OFN_HIDEREADONLY - Versteckt die "Nur lesend"-Checkbox. $OFN_LONGNAMES - Für Old-Style-Dialogenster bewirkt dieses Flag, dass das Dialogfenster lange Dateinamen verwendet. Ist dieses Flag nicht festgelegt oder wenn das $OFN_ALLOWMULTISELECT-Flag ebenso gesetzt ist, benutzen Old-Style-Dialogfenster kurze Dateinamen (8.3 Format) für Dateinamen mit Leerzeichen. Explorer-Style Dialogfenster ignorieren dieses Flag und zeigen immer lange Dateinamen an. $OFN_NOCHANGEDIR - Stellt den ursprünglichen Wert des aktuellen Verzeichnisses wieder her, wenn der Benutzer das Verzeichnis gewechselt hat um nach Dateien zu suchen. Windows 2000/XP: Dieses Flag hat keinen Effekt auf GetOpenFileName. $OFN_NODEREFERENCELINKS - Weist das Dialogfenster an, den Pfad und Dateinamen der ausgewählten Verknüpfung (.LNK) zurückzugeben. Ist dieses Flag nicht angegeben, gibt das Dialogfenster den Pfad und Dateinamen der Datei zurück, auf die sich die Verknüpfung bezieht. $OFN_NOLONGNAMES - Für Old-Style-Dialogfenster bewirkt dieses Flag, dass das Dialogfenster kurze Dateinamen benutzt (8.3 Format). Explorer-Style Dialogfenster ignorieren dieses Flag und zeigen immer lange Dateinamen an. $OFN_NONETWORKBUTTON - Versteckt und deaktiviert den "Netzwerk"-Button. $OFN_NOREADONLYRETURN - Gibt an, dass die zurückgegebene Datei nicht die "Nur lesend"-Checkbox gewählt hat und nicht in einem schreibgeschützten Verzeichnis ist. $OFN_NOTESTFILECREATE - Legt fest, dass die Datei nicht erzeugt wird, bevor das Dialogfenster geschlossen wird. Dieses Flag sollte angegeben werden, wenn die Anwendung die Datei in einer unveränderliche Netzwerkfreigabe abspeichert. Wenn eine Anwendung dieses Flag angibt, prüft die Bibliothek nicht auf Schreibschutz, ein volles Laufwerk, ein geöffnetes Laufwerk oder Netzwerkschutz. Anwendungen die dieses Flag nutzen, müssen Dateioperationen sorgfältig durchführen, weil eine Datei nicht erneut geöffnet werden kann, wenn sie erst einmal geschlossen ist. $OFN_NOVALIDATE - Legt fest, dass die Dialogfenster ungültige Zeichen in dem zurückgegebenen Dateinamen erlauben. Üblicherweise benutzt die aufrufende Anwendung eine Hook-Prozedur, welche den Dateinamen mittels der FILEOKSTRING Nachricht überprüft. Ist das Input-Control leer oder enthält nur Leerzeichen, werden die Listen der Dateien und Verzeichnisse aktualisiert. Enthält das Input-Control irgendetwas anderes, dann werden nFileOffset und nFileExtension auf Werte gesetzt, die sich aus der Textanalyse ergeben. Weder wird eine standardmäßige Erweiterung hinzugefügt, noch wird Text in den Puffer aus lpstrFileTitle kopiert. Ist der Wert aus nFileOffset kleiner als NULL, dann ist der Dateineme ungültig. Andernfalls ist der Dateiname gültig und nFileExtension und nFileOffset können so genutzt werden, als wäre das $OFN_NOVALIDATE-Flag nicht gesetzt. $OFN_OVERWRITEPROMPT - Veranlasst das "Speichern unter"-Dialogfenster eine MessageBox zu erzeugen, wenn die ausgewählte Datei bereits existiert. Der Benutzer muss bestätigen, ob die Datei überschrieben werden soll. $OFN_PATHMUSTEXIST - Legt fest, dass der Benutzer nur gültige Pfade und Dateinamen eingeben darf. Wird dieses Flag benutzt und der Benutzer gibt einen ungültigen Pfad oder Dateinamen in das "Dateiname"-Input-Control ein, dann zeigt die Dialogfenster-Funktion eine Warnung in einer MessageBox an. $OFN_READONLY - Bewirkt, dass die "Nur lesen"-Checkbox anfangs markiert ist, wenn das Dialogfenster erzeugt wird. Dieses Flag weist auf den Status der "Nur lesen"-Checkbox hin, wenn das Dialogfenster geschlossen wird. $OFN_SHAREAWARE - Legt fest, dass wenn ein Aufruf der OpenFile Funktion durch eine Verletzung der Netzwerkfreigabe fehlschlägt, der Fehler ignoriert wird und das Dialogfenster den ausgewälten Dateinamen zurückgibt. Ist dieses Flag nicht gesetzt, benachrichtigt das Dialogfenster die Hook-Prozedur, wenn eine Verletzung der Netzwerkfreigabe für den Dateinamen auftritt, den der Benutzer angegeben hat. Wenn das $OFN_EXPLORER-Flag gesetzt ist, sendet das Dialogfenster die CDN_SHAREVIOLATION-Nachricht an die Hook-Prozedur. Wenn das $OFN_EXPLORER-Flag nicht gesetzt ist, sendet das Dialogfenster die registrierte SHAREVISTRING-Nachricht an die Hook-Prozedur. $OFN_SHOWHELP - Veranlasst das Dialogfenster den Hilfe-Button anzuzeigen. Das hwndOwner-Mitglied muss das Fenster festlegen, welches die registrierten HELPMSGSTRING-Nachrichten empfangen soll, die das Dialogfenster sendet, wenn der Benutzer auf die Hilfe-Schlaltfläche klickt. Ein Dialogfenster im Explorer-Stil sendet eine CDN_HELP-Benachrichtigung an die Hook-Prozedur, wenn der Benutzer auf den Hilfe-Button klickt. $OFN_USESHELLITEM - Dieses Flag nicht benutzen. |
| nFileOffset | Gibt den 0-basierten Abstand in TCHAR's an, vom Anfang des Pfades bis zum Dateinamen in dem String, auf den lpstrFile verweist. Für die ANSI-Version ist dies die Anzahl der Bytes; für die Unicode-Version ist es die Anzahl der Zeichen. |
| nFileExtension | Gibt den 0-basierten Abstand an, in TCHAR's, vom Anfang des Pfades bis zum Dateinamenserweiterung in dem String, auf den lpstrFile verweist. Für die ANSI-Version ist dies die Anzahl der Bytes; für die Unicode-Version ist es die Anzahl der Zeichen. |
| lpstrDefExt | Zeiger auf einen Puffer, der die standardmäßige Erweiterung enthält. |
| lCustData | Bestimmt anwendungsdefinierte Daten, die das System an die Hook-Prozedur weiterreicht, benannt im lpfnHook-Mitglied. |
| lpfnHook | Zeiger auf eine Hook-Prozedur. Dieses Mitglied wird ignoriert, solange nicht das $OFN_ENABLEHOOK-Flag im Flags-Mitglied angegeben ist. |
| lpTemplateName | Zeiger auf einen NULL-terminierten String, der eine Dialogfenster-Vorlage aus dem Modul bezeichnet, das in hInstance angegeben ist. |
| pvReserved | Reserviert. Muss auf NULL gesetzt werden. |
| dwReserved | Reserviert. Muss auf 0 gesetzt werden. |
| FlagsEx | Windows 2000/XP: Ein Satz von Bitflags, die genutzt werden können, um das Dialogfenster zu initialisieren. Gegenwärtig kann dieses Mitglied NULL oder das folgende Flag sein. $OFN_EX_NOPLACESBAR - Ist dieses Flag gesetzt, wird die "Orte"-Leiste nicht angezeigt. Ist dieses Flag nicht gesetzt, dann beinhalten Explorer-Style Dialogfenster eine "Orte"-Leiste, in der die allgemein verwendeten Ordner enthalten sind, wie Favoriten und Desktop. |