CreateDialogIndirectParam -funksjonen oppretter en ikke-sperrende dialogboks fra en dialog boks mal i minnet. Før du kan vise dialogboksen, sender funksjonen en Programdefinert verdi i dialogboksen boksen prosedyren som lParam -parameter i WM_INITDIALOG -meldingen. Et program kan bruke denne verdien til å initialisere dialogbokskontroller.
() HWND CreateDialogIndirectParam HINSTANCE hInstance, / / håndtere til programforekomstenLPCDLGTEMPLATElpTemplate, / / peker til dialogboksen boksen malHWNDhWndParent, / / håndtere til eiervinduetDLGPROClpDialogFunc, / / peker til dialogboksen boksen prosedyreLPARAMlParamInit / / initialisering verdi);
I en standard mal er hodet en DLGTEMPLATE struktur etterfulgt av ekstra variabel lengde-matriser. Dataene for hver kontroll består av en DLGITEMTEMPLATE struktur etterfulgt av ekstra variabel lengde-matriser.
I en utvidet dialogboksen boksen mal, hodet bruker DLGTEMPLATEEX formatet og kontroll-definisjoner bruker DLGITEMTEMPLATEEX formatet.
Etter at CreateDialogIndirectParam returnerer, kan du frigjøre malen, som brukes bare til å få dialogboksen startet.
Hvis funksjonen er vellykket, er returverdien vindusreferansen til dialogboksen.
Hvis funksjonen mislykkes, er verdien som returneres NULL. Til å vise utvidet feilinformasjon, kan du ringe GetLastError.
CreateDialogIndirectParam -funksjonen bruker CreateWindowEx -funksjonen til å opprette dialogboksen. CreateDialogIndirectParam sender en melding i WM_INITDIALOG i dialogboksen boksen prosedyren. Hvis malen angir stilen DS_SETFONT, sender funksjonen også en WM_SETFONT -melding i dialogboksen boksen prosedyren. Funksjonen viser dialogboksen vises hvis malen angir stilen WS_VISIBLE. Til slutt, CreateDialogIndirectParam returnerer vindusreferansen til dialogboksen.
Når CreateDialogIndirectParam returnerer, kan du bruke funksjonen ShowWindow for å vise dialogboksen (Hvis det ikke allerede er synlig). For å ødelegge dialogboksen, kan du bruke funksjonen DestroyWindow.
I en mal for standard-dialog boks må strukturen DLGTEMPLATE , og hver av DLGITEMTEMPLATE -strukturer justeres på DWORD grenser. Etableringen data matrisen som følger en DLGITEMTEMPLATE struktur må også justeres på en DWORD -grense. Alle de andre variabel lengde matrisene i malen må må justeres på WORD -grenser.
I en utvidet dialogboksen boksen mal, må DLGTEMPLATEEX hodet, og hver av definisjoner for DLGITEMTEMPLATEEX -kontrollen justeres på DWORD grenser. Etableringen data matrisen, hvis noen, som følger en DLGITEMTEMPLATEEX struktur må også justeres på en DWORD -grense. Alle de andre variabel lengde matrisene i malen må justeres på WORD -grenser.
Alle tegnstrengene i dialogboksen boksen-mal, for eksempel titler for dialogboksen og knapper, må være Unicode-strenger. For å opprette kode som fungerer på både Windows og Windows NT, kan du bruke MultiByteToWideChar -funksjonen til å generere disse Unicode-strenger.
Windows 95 og senere:Systemet kan støtte opptil 255 kontroller per boks-mal i dialogboksen. Du kan plassere mer enn 255 kontroller i en dialogboks, kan du opprette kontrollene i Meldingsbehandling for WM_INITDIALOG i stedet for å plassere dem i malen.
Windows CE: Dialogboksene utenfor det synlige området av skjermen omplasseres ikke automatisk.
Hvis brukeren trykker ALT + H, mens dialogboksen har inndata fokus, posterer systemet en WM_HELP melding i dialogboksen prosedyren. Et program skal svare på denne meldingen ved å vise kontekstavhengig hjelp for dialogboksen.
Følgende stiler støttes ikke for stil -medlem av DLGTEMPLATE -struktur:
For å få standardplasseringen, kan du bruke DS_CENTER-stil.
Hvis stilen for WS_CHILD ikke er angitt, antas WS_POPUP-stil.
nbsp; Windows &NT: krever versjon 3.1 eller senere.
Windows:Krever Windows 95 eller senere.
Windows CE:Krever versjon 1.0 eller senere.
Topptekst:Deklarert i winuser.h.
Importere biblioteket:Bruk user32.lib.
Unicode:Implementert som Unicode- og ANSI-versjoner på Windows NT.
Oversikt over dialogboksen-boksene, dialogboksen boksen-funksjoner, CreateDialog, CreateDialogIndirect, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, MultiByteToWideChar, ShowWindow, WM_INITDIALOG, WM_SETFONT