Nicht modale Dialogfelder

Ein nicht modales Dialogfeld sollte ein Popup-Fenster ein Systemmenü, eine Titelleiste und ein dünner Rand; Das heißt, sollte die Dialogfeldvorlage WS_POPUP, WS_CAPTION, WS_SYSMENU und WS_BORDER Formatvorlagen angeben. Das System nicht automatisch das Dialogfeld anzuzeigen, es sei denn, die Vorlage der Style WS_VISIBLE gibt.

Eine Anwendung erstellt ein nicht modales Dialogfeld mithilfe der Funktion "createDialog" oder CreateDialogIndirect . CreateDialog erfordert den Namen oder den Bezeichner einer Ressource mit eine Dialogfeldvorlage; CreateDialogIndirect erfordert das Handle für ein Objekt mit eine Dialogfeldvorlage. Zwei weitere Funktionen, CreateDialogParam und CreateDialogIndirectParam, auch erstellen nicht modale Dialogfelder; Sie übergeben einen angegebenen Parameter an die Dialogfeldprozedur, wenn das Dialogfeld erstellt wird.

CreateDialog und andere Erstellung Funktionen zurückgeben ein Fensterhandle für das Dialogfeld. Die Anwendung und die Dialogfeldprozedur können dieses Handle verwenden, um das Dialogfeld verwalten. Beispielsweise wenn WS_VISIBLE nicht im Dialogfeld Feld Vorlage angegeben ist, kann die Anwendung das Dialogfeld anzeigen, indem das Fensterhandle an die Funktion ShowWindow übergeben.

Ein nicht modales Dialogfeld deaktiviert das Besitzerfenster weder Nachrichten an sie gesendet. Wenn Sie das Dialogfeld erstellen, das System macht es das aktive Fenster, aber der Benutzer oder die Anwendung des aktiven Fensters jederzeit ändern kann. Wenn das Dialogfeld inaktiv, bleibt es über dem Eigentümer Fenster in der Z-Reihenfolge, selbst wenn das Besitzerfenster aktiv ist.

Die Anwendung ist verantwortlich für das Abrufen und Einplanung Eingabemeldungen in das Dialogfeld. Die meisten Anwendungen verwenden die Hauptnachrichtenschleife. Um den Benutzer zu verschieben und wählen die Steuerelemente mithilfe der Tastatur zu ermöglichen, muss die Anwendung jedoch die IsDialogMessage -Funktion aufrufen. Weitere Informationen zu dieser Funktion finden Sie unter Dialogfeld Feld Tastatur-Interface.

Ein nicht modales Dialogfeld kann keinen Wert an die Anwendung zurückgegeben, da ein modales Dialogfeld ist, aber die Dialogfeldprozedur Informationen an das Besitzerfenster senden kann mithilfe der SendMessage -Funktion.

Eine Anwendung muss vor dem Beenden alle modalen Dialogfelder zerstören. Es kann ein nicht modales Dialogfeld zerstören, indem Sie die DestroyWindow -Funktion. In den meisten Fällen ruft die Dialogfeldprozedur DestroyWindow in Reaktion auf die Benutzereingabe, z. B. die Schaltfläche "Abbrechen" auswählen. Wenn der Benutzer im Dialogfeld auf diese Weise nie schließt, muss die Anwendung DestroyWindow aufrufen.

DestroyWindow ungültig das Fensterhandle für das Dialogfeld, so dass alle nachfolgenden Aufrufe an Funktionen, die das Handle verwenden Fehlerwerte zurückgeben. Um Fehler zu vermeiden, sollten die Dialogfeldprozedur dem Besitzer Benachrichtigen, dass das Dialogfeld zerstört wurde. Viele Anwendungen pflegen eine globale Variable, die das Handle für das Dialogfeld. Wenn das Dialogfeld Feld Verfahren das Dialogfeld zerstört, wird auch die globale Variable auf NULL angibt, dass das Dialogfeld nicht mehr gültig ist.

Die Dialogfeldprozedur muss nicht die EndDialog -Funktion, um ein nicht modales Dialogfeld zerstören aufrufen.

Index