Vlastné dialógové okná

Aplikácia môže vytvoriť vlastné dialógové okná pomocou definovanom aplikáciou okno triedy pre dialógové okná namiesto pou+?itia preddefinované dialógové okno pole trieda. Aplikácie sa zvyčajne používa túto metódu, keď dialógové okno je ich hlavným oknom, ale je tiež užitočné pri vytváraní modálneho a sú nemodálne dialógové okná pre aplikácie, ktoré boli štandardné prekrývajúcich sa okien.

Trieda okna definovanom aplikáciou umožňuje uplatňovanie definovať okno postup pre dialógové okno pole a procesu správy pred ich odoslaním postupu dialógové okno pole. Umožňuje definovať triedy ikonu, trieda pozadia štetec a triedy ponuky pre okno aplikácie. Žiadosť musí zaregistrovať triedu okna pred pokusom o vytvorenie dialógového okna a musí poskytnúť dialógové okno pole Šablóna atóm hodnotu alebo názov triedu okna.

Mnohé aplikácie vytvorenie novej triedy dialógové okno pole najprv získava informácie triedach pre triedy preddefinované dialógové okno pole a obiehanie to GetClassInfo funkciu, ktorá vypĺňa WNDCLASS štruktúru s informáciami. Uplatňovanie upravuje jednotliví členovia konštrukcie, ako napríklad názov triedy, kefou a ikona potom zaregistruje novej triedy pomocou funkcie RegisterClass . Ak žiadosť vyplní štruktúru WNDCLASS na svoje vlastné, nastavi členské cbWndExtra na DLGWINDOWEXTRA, čo je počet dodatočných bajtov systému vyžaduje pre každý dialógovým oknom. Ak aplikácia používa dodatočných bajtov, ktoré každý dialógového okna, musí byť mimo dodatočných bajtov, ktoré sú požadované v rámci systému.

Okno postupu vlastných dialógového má rovnaké parametre a požiadavky ako akékoľvek iné okno postupu. Na rozdiel od iných okien postupov však okno postup pre toto dialógové okno by volať funkciu DefDlgProc namiesto funkcie DefWindowProc pre všetky správy nespracuje. DefDlgProc vykonáva rovnaké predvolenú správu spracovanie ako okno postup preddefinované dialógovým oknom, ktoré zahŕňajú volanie dialógové okno pole postup.

Aplikáciu môžete vytvoriť aj vlastné dialógové okná subclassing okno postup preddefinované dialógovým oknom. SetWindowLong funkcia umožňuje uplatňovanie adresu okno postup pre dané okno. Žiadosť môže tiež pokúsiť podtriedy pomocou funkcie SetClassLong , ale robí to ovplyvňuje všetky dialógové okná v systéme, nie len tých, ktorí patria k uplatňovaniu.

Aplikácie, ktoré niekedy vytvoriť vlastné dialógové okná poskytujú alternatívnu klávesovú rozhranie pre dialógové okná. Sú nemodálne dialógových oknách, to môže znamenať uplatnenie nie volať funkciu IsDialogMessage a namiesto spracováva všetky klávesové vstupy v postupe vlastné okno. V takýchto prípadoch žiadosť môžete použiť WM_NEXTDLGCTL správy, aby sa minimalizovalo kódu potrebného aby presúvanie sa klávesmi po vstupe z jeden ovládací prvok do iného. Toto hlásenie, keď prešiel na DefDlgProcvstupné aktivuje určený ovládací prvok a aktualizuje vzhľad ovládacích prvkov, napríklad pohyblivé orámovanie predvolené tlačidlá alebo nastavenie automatické prepínacie tlačidlo.