Een modaal dialoogvenster maken

U maakt een modaal dialoogvenster met behulp van de functie van de dialoogbox . De id of de naam van een resource dialoogvenster vak sjabloon en het adres van het dialoogvenster vak procedure moet u opgeven. De functie DialogBox ladingen van de sjabloon, wordt het dialoogvenster weergegeven en verwerkt alle invoer van de gebruiker totdat de gebruiker het dialoogvenster sluit.

In het volgende voorbeeld, geeft de toepassing een modaal dialoogvenster weer wanneer de gebruiker een opdracht Item verwijderen uit een programmamenu kiest. Het dialoogvenster bevat een edit-besturingselement (waarin de gebruiker voert de naam van een item) en OK en annuleren knoppen. Het besturingselement-id's voor deze besturingselementen zijn respectievelijk ID_ITEMNAME, IDOK, en IDCANCEL,.

Het eerste deel van het voorbeeld bestaat uit de verklaringen die het modale dialoogvenster maken. Deze verklaringen, maakt in het venster procedure voor hoofdvenster van de toepassing, het dialoogvenster wanneer het systeem een WM_COMMAND -bericht met de IDM_DELETEITEM opdracht-id ontvangt. Het tweede deel van het voorbeeld is het dialoogvenster vak procedure, die de inhoud van het besturingselement voor bewerking opgehaald en sluit het dialoogvenster nadat een WM_COMMAND-bericht is ontvangen.

De volgende instructies maken het modale dialoogvenster. Het dialoogvenster vak sjabloon is een bron in het uitvoerbare bestand van de toepassing en heeft de resource-id DLG_DELETEITEM:

geval WM_COMMAND: schakelen (LOWORD(wParam)) {IDM_DELETEITEM geval: als (DialogBox (hinst, MAKEINTRESOURCE(DLG_DELETEITEM), hwnd, (DLGPROC) DeleteItemProc) == IDOK) {}
 
                    / / Voltooi de opdracht; szItemName / / bevat de naam van het item / / verwijderen. 

                }
 
                else 
                {

/ / De opdracht annuleren. 

                } 
                break; 
        } retourneren 0 L 
 

In dit voorbeeld identificeert de toepassing de belangrijkste venster als het venster van de eigenaar voor het dialoogvenster. Wanneer het systeem in eerste instantie het dialoogvenster wordt weergegeven, is de positie relatief ten opzichte van de linkerbovenhoek van het clientgebied van het venster van de eigenaar. De toepassing gebruikt de resultaatwaarde van DialogBox om te bepalen of u wilt doorgaan met de opdracht of annuleren. De volgende instructies definiŽren het dialoogvenster vak procedure.

char szItemName [80]; / / naam van te verwijderen item ontvangt. 
 
BOOL CALLBACK DeleteItemProc (hwndDlg, bericht, wParam, lParam) HWND hwndDlg; 
UINT bericht; 
WPARAM wParam; 
LPARAM lParam; 
{schakelaar (bericht) {geval WM_COMMAND: schakelen (LOWORD(wParam)) {IDOK geval: als (!GetDlgItemText (hwndDlg, ID_ITEMNAME, szItemName, 80)) * szItemName = 0; 
 
                    / / Vallen door. 
 
                Case IDCANCEL: EndDialog (hwndDlg, wParam); 
                    return TRUE; 
            }} return FALSE; 
} 
 

De procedure in dit voorbeeld wordt GetDlgItemText gebruikt voor het ophalen van de huidige tekst van het besturingselement bewerken door ID_ITEMNAME. De procedure roept vervolgens de functie EndDialog aan het dialoogvenster de retourwaarde ingesteld op IDOK of IDCANCEL, afhankelijk van het bericht ontvangen, en om te beginnen met het proces van het dialoogvenster wordt gesloten. De IDOK en IDCANCEL-id komen overeen met de knoppen OK en annuleren. Nadat de procedure EndDialogroept, het systeem extra berichten stuurt naar de procedure te vernietigen in het dialoogvenster en het dialoogvenster de retourwaarde keert terug naar de functie die het dialoogvenster gemaakt.

Index