OFNHookProc

Die OFNHookProc -Hook-Prozedur ist eine anwendungsdefinierte oder Bibliothek definierte Callback-Funktion, die mit der Explorer-Format Öffnen und Speichern Standarddialogfelder verwendet wird. Die Funktion empfängt Benachrichtigungen von der Standarddialogfelds gesendet. Die Funktion empfängt auch Nachrichten für zusätzliche Steuerelemente, die Sie definiert durch Angabe einer Dialogfeldvorlage Kind.

Der LPOFNHOOKPROC -Typ definiert einen Zeiger auf diese Callback-Funktion. OFNHookProc ist ein Platzhalter für den Namen der Anwendung definierten oder Bibliothek definierte Funktion.

Wenn Sie nicht das OFN_EXPLORER-Flag beim Öffnen oder Speichern unter gemeinsamen ein Dialogfeld erstellen angeben, und Sie eine Hookprozedur möchten, müssen Sie eine altmodische OFNHookProcOldStyle Hook-Prozedur verwenden. In diesem Fall wird das Dialogfeld die altmodische Benutzeroberfläche haben.

(UINT Rückruf OFNHookProc HWND  Hdlg,, / / handle für untergeordnete DialogfensterUINTuiMsg, / / message IDWPARAMwParam, / / message ParameterLPARAMlParam / / message Parameter);
 

Parameter

hdlg
Handle für das Dialogfeld Kind im Dialogfeld Öffnen oder Speichern unter . Verwenden Sie die GetParent -Funktion, um das Handle für das Öffnen oder Speichern unter Dialogfeld Feld Fenster erhalten.
uiMsg
Identifiziert die Nachricht empfangen wird.
wParam
Gibt zusätzliche Informationen über die Nachricht. Die genaue Bedeutung hängt vom Wert des Parameters uiMsg.
lParam
Gibt zusätzliche Informationen über die Nachricht. Die genaue Bedeutung hängt vom Wert des Parameters uiMsg.

Wenn der UiMsg -Parameter die WM_INITDIALOG -Meldung angibt, ist lParam ein Zeiger auf eine OPENFILENAME Struktur enthält die Werte angegeben, wenn das Dialogfeld erstellt wurde.

Rückgabewerte

Wenn die Hook-Prozedur gibt NULL zurück, verarbeitet die Standard-Dialogfeldprozedur die Nachricht.

Wenn die Hook-Prozedur einen Wert ungleich NULL zurückgibt, ignoriert die Standard-Dialogfeldprozedur die Nachricht.

Für die CDN_SHAREVIOLATION und CDN_FILEOK -Benachrichtigungen sollte die Hook-Prozedur einen Wert ungleich NULL, um anzugeben, dass es die Funktion SetWindowLong verwendet hat, zu einem DWL_MSGRESULT Wert ungleich NULL zurückgeben.

Bemerkungen

Wenn Sie die GetOpenFileName oder GetSaveFileName -Funktion verwenden, um ein Explorer-Stil Öffnen oder Speichern unter häufig verwendetes Dialogfeld erstellen, erhalten Sie eine OFNHookProc -Hook-Prozedur. Um die Hook-Prozedur zu aktivieren, verwenden Sie die OPENFILENAME -Struktur, die Sie an das Dialogfeld Schaffung Funktion übergeben. Geben Sie den Zeiger auf die Hook-Prozedur in den LpfnHook und geben das OFN_ENABLEHOOK-Flag in den Flags an.

Wenn Sie eine Hook-Prozedur für eine Explorer-Stil-Standarddialogfeld bereitstellen, erstellt das System ein Dialogfeld, das ein untergeordnetes Element im Dialogfeld Standard ist. Die Hook-Prozedur fungiert als die Dialogfeld-Prozedur für das Kind-Dialogfeld. In diesem Dialogfeld Kind basiert auf der Vorlage, die Sie in der OPENFILENAME -Struktur angegeben, oder es ist ein Standard-Kind-Dialog, wenn keine Vorlage angegeben ist. Das Kind-Dialogfeld wird erstellt, wenn die standardmäßige Dialogfeld Prozedur die WM_INITDIALOG -Meldung verarbeitet. Nachdem das Dialogfenster Kind eigene WM_INITDIALOG-Meldung verarbeitet, verschiebt die Standardprozedur Dialogfeld Standardsteuerelemente, falls notwendig, um Platz für zusätzliche Steuerelemente des Dialogfeldes Kind machen. Das System sendet dann die Benachrichtigung CDN_INITDONE an die Hook-Prozedur.

Die Hook-Prozedur empfängt keine Nachrichten für die standardmäßigen Steuerelemente im Dialogfeld Standard. Sie können eine Unterklasse der Standardsteuerelemente, aber dies wird abgeraten, weil es Ihre Anwendung inkompatibel mit zukünftigen Versionen im Dialogfeld gemeinsame machen kann. Die Explorer-Stil Dialogfelder bieten jedoch eine Reihe von Nachrichten, die zur Überwachung und Kontrolle des Dialogs die Hook-Prozedur verwenden können. Dazu gehören eine Reihe von Benachrichtigungsmeldungen gesendet aus dem Dialog als auch Nachrichten, die Sie zum Abrufen von Informationen aus dem Dialogfeld senden können. Eine vollständige Liste dieser Nachrichten finden Sie im Explorer-Stil-Hook-Prozeduren.

Wenn die Hook-Prozedur die WM_CTLCOLORDLG -Nachricht verarbeitet, muss einen gültiger Pinsel-Handle für den Hintergrund im Dialogfeld zurückgegeben. Im Allgemeinen wenn es jede Nachricht WM_CTLCOLOR * verarbeitet, muss einen gültige Pinsel-Handle für den Hintergrund des angegebenen Steuerelements zurückgeben.

Rufen Sie nicht die EndDialog -Funktion von der Hook-Prozedur. Stattdessen kann die Hook-Prozedur die PostMessage -Funktion eine WM_COMMAND-Meldung mit der IDABORT-Wert, der die Dialogfeldprozedur Post aufrufen. IDABORT schließt das Dialogfeld und bewirkt, dass die Dialogfeld Feld Funktion FALSE zurück. Wenn Sie müssen wissen, warum die Hook-Prozedur das Dialogfeld geschlossen, müssen Sie Ihre eigenen Kommunikationsmechanismus zwischen die Hook-Prozedur und Ihre Anwendung bereitstellen.

QuickInfo

&Nbsp; Windows NT: Version 3.1 oder höher erforderlich.
Windows:Erfordert Windows 95 oder höher.
Windows CE:Nicht unterstützt.
Header:In commdlg.h deklariert.
Importieren Bibliothek:Benutzerdefinierte.

Siehe auch

Übersicht über common Dialog Box Library, allgemeine Dialogfeld Feld Funktionen, GetOpenFileName, GetSaveFileName, OFNHookProcOldStyle, OPENFILENAME

Index