Modálne dialógové okná

Modálnym dialógovým oknom by mali byť automaticky otváraného okna majú systémovú ponuku, záhlavia a hrubé hraníc; to znamená, dialógové okno pole Šablóna by mali špecifikovať štýly WS_POPUP, WS_SYSMENU, WS_CAPTION a DS_MODALFRAME. Hoci žiadosť môžete označiť WS_VISIBLE štýlu, systém zobrazí vždy modálnym dialógovým oknom nezávisle od či dialógové okno pole Šablóna určuje štýl WS_VISIBLE. Žiadosť musí vytvoriť modálnym dialógovým oknom so WS_CHILD štýlom. Modálnym dialógovým oknom s týmto štýlom samo vypne, zabránenie akéhokoľvek následného vstup zamedzí jeho prijatie žiadosti.

Aplikácia vytvorí modálnym dialógovým oknom pomocou funkcie DialogBox alebo DialogBoxIndirect . DialogBox vyžaduje názov alebo identifikátor prostriedku obsahujúce dialógové okno pole Šablóna; DialogBoxIndirect vyžaduje popisovač objektu pamäť obsahuje dialógové okno pole Šablóna. Funkcie DialogBoxParam a DialogBoxIndirectParam vytvoriť aj Modálne dialógové okná; sú rovnaké ako už bolo spomenuté funkcie ale priechod zadaný parameter postupu dialógové okno pole novovytvorený dialógového okna.

Pri vytváraní modálnym dialógovým oknom, systém umožňuje aktívneho okna. Dialógovom okne ostane aktívny, až do dialógového poľa postup zavolá funkciu EndDialog alebo systém aktivuje okno do inej aplikácie. Používateľ ani uplatňovanie môže aktivujte okno vlastník až do zničenia modálnym dialógovým oknom.

Keď vlastník okno nie je už vypnutý, systém automaticky vypne okno a všetky podriadené okná patriace keď vytvára modálnym dialógovým oknom. Vlastník okno vypnutú až do zničenia dialógového okna. Hoci dialógové okno pole postup potenciálne mohol vlastník okno kedykoľvek umožniť vlastník porazia účel modálnym dialógovým oknom a nie je odporúčané. Keď zničené postupom dialógové okno pole systém umožňuje vlastníkom okno znova, ale len ak modálnym dialógovým oknom spôsobené majiteľa zakázať.

Ako systém vytvára modálnym dialógovým oknom, pošle správu WM_CANCELMODE do okna (ak existujú) v súčasnej dobe zachytiť vstup myši. Aplikácia, ktorá prijíma túto správu by prepustiť zachytiť myš tak, aby užívateľ vie hýbať myšou modálnym dialógovým oknom. Pretože systém zakáže vlastník okno, všetko myš vstup sa stratí, ak majiteľ nepredloží Uvoľnením tlačidla myši po prijatí tejto správy.

Na spracovanie správ pre modálnym dialógovým oknom systému začína svoju nabíjaciu stanicu správy, pričom dočasnú kontrolnú front hlásení celej aplikácie. Keď systém získa správy, ktorý nie je explicitne dialógového okna, odosiela správu do okna vhodné. Ak získa WM_QUIT správy, príspevky správu späť do frontu správ aplikácie tak, aby aplikácie s hlavným posolstvom slučky nakoniec môžete načítať správy.

Systém odošle hlásenie WM_ENTERIDLE do okna vlastník vždy, keď je prázdny front hlásení aplikácie. Aplikáciu môžete použiť túto správu vykonávať úlohy na pozadí, zatiaľ čo dialógovom okne zostane na obrazovke. Ak aplikácia používa správu v tomto smere, žiadosti musia často výnos kontrolu (napríklad pomocou funkcie PeekMessage ) tak, že modálnym dialógovým oknom môžu dostať žiaden vstupný signál od užívateľa. Chcete zabrániť odosielanie správ WM_ENTERIDLE modálnym dialógovým oknom, uplatňovanie môžete zadať štýl DS_NOIDLEMSG pri vytváraní dialógovým oknom.

Žiadosť ničí modálnym dialógovým oknom pomocou funkcie EndDialog . Vo väčšine prípadov, dialógové okno pole postup vyžaduje EndDialog keď používateľ vyberie príkaz Zavrieť z dialógovým oknom systémovú ponuku alebo vyberie tlačidlo OK alebo zrušiť v dialógovom okne. Dialógovom okne sa môžete vrátiť hodnotu prostredníctvom DialogBox funkciu (alebo iné funkcie, vytvorenie) zadaním hodnoty pri volaní funkcie EndDialog . Systém vráti túto hodnotu po ničí dialógového okna. Väčšina aplikácií používa tento vrátenej hodnoty na určenie či dialógovom okne úspešne ukončil svoju úlohu alebo zrušil používateľ. Systém nemôže vrátiť kontrolu zo funkciu, ktorá vytvorí dialógovom okne až do dialógového poľa postup pod názvom EndDialog funkcia.

Index