Creați o casetă de dialog modale utilizând funcția DialogBox . Trebuie să specificați identificatorul sau numele din caseta de dialog șablon resursă și adresa a procedurii de caseta de dialog. Funcția DialogBox încarcă șablonul, afișează caseta de dialog, și procesează toate utilizator intrare până când utilizatorul se închide caseta de dialog.
În exemplul următor, aplicarea afișează o casetă de dialog modale atunci când utilizatorul alege o comandă șterge elementul la un meniu de aplicare. Caseta de dialog conține un control de editare (în care utilizatorul introduce numele unui element) și OK și Cancel butoane. Identificatori de control pentru aceste controale sunt ID_ITEMNAME, IDOK și IDCANCEL, respectiv.
Prima parte a exemplu constă din declarațiile care creează caseta de modal dialog. Aceste declarații, la procedura fereastra aplicației fereastra principală, crea caseta de dialog atunci când sistemul primește un mesaj de WM_COMMAND având identificatorul de comandă IDM_DELETEITEM. A doua parte de exemplu este procedura caseta de dialog, care preia conținutul de comanda editare și se închide caseta de dialog după primirea unui mesaj WM_COMMAND.
Următoarele afirmații crea caseta de modal dialog. Șablonul de caseta de dialog este o resursă în fișier executabil aplicației și are identificatorul de resurse DLG_DELETEITEM:
wM_COMMAND de caz: Comutați (LOWORD(wParam)) {caz IDM_DELETEITEM: dacă (DialogBox (hinst, MAKEINTRESOURCE(DLG_DELETEITEM), hwnd, (DLGPROC) DeleteItemProc) == IDOK) {}
/ / Finaliza comanda; szItemName / / conține numele elementul / / delete.
}
else
{
/ / Anula comanda.
}
break;
} întoarce 0 L
În acest exemplu, aplicarea identifică sale fereastra principală ca fereastra proprietar pentru caseta de dialog. Atunci când sistemul inițial afișează caseta de dialog, pozi?ia sa este relativ la colțul din stânga din fereastra de proprietar client zona. Aplicația utilizează valoarea returnată de DialogBox pentru a determina dacă procedați cu comanda sau revocați. Următoarele afirmații definirea procedurii de caseta de dialog.
szItemName char [80]; / / primește numele elementului pentru a șterge.
DeleteItemProc de apel INVERS BOOL (hwndDlg, mesaj, wParam, lParam) HWND hwndDlg;
UINT mesaj;
WPARAM wParam;
LPARAM lParam;
{switch (mesaj) {caz WM_COMMAND: Comutați (LOWORD(wParam)) {caz IDOK: if (!GetDlgItemText (hwndDlg, ID_ITEMNAME, szItemName, 80)) * szItemName = 0;
/ / Cad prin intermediul.
caz IDCANCEL: EndDialog (hwndDlg, wParam);
întoarce TRUE;
}} return FALSE;
}
În acest exemplu, procedura utilizează GetDlgItemText pentru a prelua textul actual din comanda Editare identificate de ID_ITEMNAME. Procedura apoi apelează funcția EndDialog pentru a seta valoarea returnată caseta de dialog IDOK sau IDCANCEL, în funcție de mesaj primit, și pentru a începe procesul de închidere a casetei de dialog. Identificatori IDOK și IDCANCEL corespunde butoanele OK și Cancel. După ce procedura apeluri EndDialog, sistemul trimite mesaje suplimentare la procedura pentru a distruge caseta de dialog și întoarce valoarea din caseta de dialog înapoi la funcția create cu caseta de dialog.