Erstellen eines modalen Dialogfelds

Sie erstellen ein modales Dialogfeld mithilfe der Funktion DialogBox . Sie müssen die ID oder der Name einer Dialogfeldressource Vorlage und die Adresse des das Dialogfeld im Feld Prozedur angeben. Die DialogBox -Funktion lädt die Vorlage, zeigt das Dialogfeld und alle Benutzereingaben verarbeitet, bis der Benutzer das Dialogfeld schließt.

Im folgenden Beispiel zeigt die Anwendung ein modales Dialogfeld, wenn der Benutzer einen Element löschen-Befehl ein Programm-Menü auswählt. Das Dialogfeld enthält ein Edit-Steuerelement (in dem der Benutzer gibt den Namen eines Elements) und Schaltflächen OK und Abbrechen. Die Steuerelement-IDs für diese Steuerelemente sind ID_ITEMNAME, IDOK und IDCANCEL, bzw.

Der erste Teil des Beispiels besteht aus Anweisungen, die das modale Dialogfeld erstellen. Diese Aussagen, erstellen Wenn das System eine WM_COMMAND -Meldung mit dem Bezeichner IDM_DELETEITEM Befehl empfängt in der Fensterprozedur der Anwendung im Hauptfenster das Dialogfeld. Der zweite Teil des Beispiels ist die Dialogfeldprozedur, die den Inhalt des Edit-Steuerelements abruft und schließt das Dialogfeld nach Erhalt eine WM_COMMAND-Nachricht.

Die folgenden Anweisungen erstellen des modalen Dialogfelds. Das Dialogfeld Feld Vorlage ist eine Ressource in der ausführbaren Datei der Anwendung und ist die Ressource-ID DLG_DELETEITEM:

fall WM_COMMAND: wechseln (LOWORD(wParam)) {IDM_DELETEITEM Fall: Wenn (DialogBox (Hinst, MAKEINTRESOURCE(DLG_DELETEITEM), Hwnd, DeleteItemProc (DLGPROC)) == IDOK) {}
 
                    / / Ausführen den Befehl; SzItemName / / enthält den Namen des Elements, das / / Löschen. 

                }
 
                else 
                {

/ / Cancel the Command. 

                } 
                break; 
        } zurück, 0 L 

 

In diesem Beispiel identifiziert die Anwendung das Hauptfenster als das Besitzerfenster für das Dialogfeld. Wenn das System zunächst das Dialogfeld angezeigt wird, ist die Position relativ zur oberen linken Ecke des Clientbereichs das Besitzerfenster. Die Anwendung verwendet den Rückgabewert von DialogBox um zu bestimmen, ob der Befehl fortzusetzen oder abzubrechen. Die folgenden Anweisungen definieren die Dialogfeldprozedur.

char SzItemName [80]; / / Name des Elements löschen erhält. 
 
BOOL CALLBACK DeleteItemProc (HwndDlg, Message, wParam, lParam) HWND HwndDlg; 
UINT Message; 
WPARAM wParam; 
LPARAM lParam; 
{Switch (Message) {Fall WM_COMMAND: wechseln (LOWORD(wParam)) {case IDOK: If (!GetDlgItemText (HwndDlg, ID_ITEMNAME, SzItemName, 80)) * SzItemName = 0; 
 
                    / / Durch fallen. 
 
                Fall IDCANCEL: EndDialog (HwndDlg, wParam); 
                    TRUE zurück; 
            {}} return FALSE; 
} 

 

In diesem Beispiel verwendet die Prozedur GetDlgItemText zum Abrufen des aktuellen Textes aus das Edit-Steuerelement identifiziert durch ID_ITEMNAME. Die Prozedur ruft dann die EndDialog -Funktion der Dialogfeld Feld-Rückgabewert IDOK oder IDCANCEL, je nach die Nachricht erhielt, und dem Schließen des Dialogfelds beginnen. Der Bezeichner IDOK und IDCANCEL entsprechen die Schaltflächen OK und Abbrechen. Nachdem die Prozedur EndDialogaufgerufen, das System sendet zusätzliche Meldungen an die Prozedur, um das Dialogfeld zerstören und gibt der Dialogfeld Feld-Rückgabewert an die Funktion, die das Dialogfeld erstellt zurück.

Index