Casetele de Dialog fără mod

O casetă de dialog fără mod ar trebui să fie o fereastră pop-up cu un sistem de meniu, o bară de titlu, un chenar subțire; Asta este, șablonul de caseta de dialog trebuie să specifice stiluri WS_POPUP, WS_CAPTION, WS_BORDER și WS_SYSMENU. Sistemul nu nu afișa automat caseta de dialog dacă șablonul specifică stilul WS_VISIBLE.

O cerere creează o casetă de dialog fără mod utilizând funcția CreateDialog sau CreateDialogIndirect . CreateDialog necesită numele sau identificatorul de o resursă care con?in un șablon de caseta de dialog; CreateDialogIndirect necesită ghidajul de un obiect de memorie care con?in un șablon de caseta de dialog. Două alte funcții, CreateDialogParam și CreateDialogIndirectParam, de asemenea, crea casete de dialog fără mod; trec un parametru specificate la procedura de caseta de dialog atunci când se creează caseta de dialog.

CreateDialog și alte funcții crearea reveni un mâner fereastra pentru caseta de dialog. Aplicarea ?i procedura de caseta de dialog pot utiliza acest mâner pentru gestionarea caseta de dialog. De exemplu, dacă WS_VISIBLE nu este specificată în caseta de dialog șablon, cererea poate afișa caseta de dialog prin care trece ghidajul fereastra la funcția de ShowWindow.

O casetă de dialog fără mod dezactivează fereastra proprietarul nici trimite mesaje de la ea. Când se creează caseta de dialog, sistemul permite fereastra activă, dar utilizatorul sau aplicarea poate modifica fereastra activă în orice moment. În cazul în care caseta de dialog a devenit inactiv, acesta rămâne mai sus fereastra de proprietar în ordinea Z, chiar dacă proprietarul fereastra este activă.

Cererea este responsabil pentru regăsirea și expedierea mesajelor de intrare în caseta de dialog. Cele mai multe aplicații utilizați bucla mesajul principal pentru acest lucru. Cu toate acestea, pentru a permite utilizatorului să mutați și selectați controalele utilizând tastatura, cererea trebuie să apela funcția IsDialogMessage . Pentru mai multe informații despre această funcție, a se vedea Caseta de Dialog tastatură Interface.

O casetă de dialog fără mod nu se pot întoarce o valoare la aplicarea ca o casetă de modal dialog nu, dar procedura caseta de dialog poate trimite informații la fereastra proprietarul utilizând funcția SendMessage.

Cererea trebuie să distrugă toate casetele de dialog fără mod înainte de încheiere. Acesta poate distruge o casetă de dialog fără mod utilizând funcția DestroyWindow . În majoritatea cazurilor, procedura de caseta de dialog solicită DestroyWindow raspuns la intrare de la utilizator, cum ar fi alegerea butonul Revocare. Dacă utilizatorul nu se închide caseta de dialog în acest fel, cererea trebuie să apel DestroyWindow.

DestroyWindow invalidează ghidajul fereastra pentru caseta de dialog astfel încât ulterioare apeluri la funcțiile care utilizează ghidajul întoarce valori de eroare. Pentru a preveni erori, caseta de dialog procedura ar trebui să notifice proprietarul că a fost distrus în caseta de dialog. Multe aplicații menține o variabilă globală care con?in ghidajul pentru caseta de dialog. Atunci când procedura de caseta de dialog distruge caseta de dialog, aceasta stabilește, de asemenea, variabila globală la nul, indicând că caseta de dialog nu mai este valid.

Caseta de dialog procedura nu trebuie să apela funcția EndDialog pentru a distruge o casetă de dialog fără mod.

Index