DialogBoxIndirectParam -funksjonen oppretter en 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.
int () DialogBoxIndirectParam HINSTANCE hInstance, / / håndtere til programforekomstenLPCDLGTEMPLATEhDialogTemplate, / / identifiserer dialogboksen boksen malHWNDhWndParent, / / håndtere til eiervinduetDLGPROClpDialogFunc, / / peker til dialogboksen boksen prosedyreLPARAMdwInitParam / / initialisering verdi);
I standard mal for en dialogboks 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 mal for en dialogboks, hodet bruker DLGTEMPLATEEX formatet og kontroll-definisjoner bruker DLGITEMTEMPLATEEX formatet.
Hvis funksjonen lykkes, er returverdien nResult -parameter som er spesifisert i kallet til funksjonen EndDialog , som ble brukt til å avslutte dialogboksen.
Hvis funksjonen mislykkes, er verdien som returneres-1. Til å vise utvidet feilinformasjon, kan du ringe GetLastError.
DialogBoxIndirectParam -funksjonen bruker CreateWindowEx -funksjonen til å opprette dialogboksen. DialogBoxIndirectParam 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 (uavhengig av om malen angir stilen WS_VISIBLE), deaktiverer eiervinduet og starter sin egen meldingsløkke for å hente og sende meldinger for dialogboksen.
Når dialogboksen boksen prosedyre kaller funksjonen EndDialog , DialogBoxIndirectParam ødelegger dialogboksen, slutter meldingsløkke, aktiverer du eiervinduet (Hvis det er aktivert tidligere) og returnerer parameteren nResult som er angitt av dialogboksen boksen prosedyre når det kalt EndDialog.
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: 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.
For andre dialogboksen begrensningene, se CreateDialogIndirectParam.
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, CreateWindowEx, DialogBox, DialogBoxIndirect, DialogBoxParam, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT