DialogBoxIndirect

DialogBoxIndirect makroen oppretter en sperrende dialogboks fra en dialog boks mal i minnet. DialogBoxIndirect returnerer ikke kontrollen før den angitte tilbakeringingsfunksjonen avslutter den modale dialogboksen ved å kalle EndDialog -funksjonen. DialogBoxIndirect makroen bruker funksjonen DialogBoxIndirectParam.

int () DialogBoxIndirect HINSTANCE  hInstance, / / håndtere til programforekomstenLPDLGTEMPLATElpTemplate, / / identifiserer dialogboksen boksen malHWNDhWndParent, / / håndtere til eiervinduetDLGPROClpDialogFunc / / peker til dialogboksen boksen prosedyre);
 

Parametere

hInstance
Identifiserer forekomsten av modulen som oppretter dialogboksen.
lpTemplate
Pekeren til en global minne-objekt som inneholder en mal som DialogBoxIndirect bruker til å opprette dialogboksen. En dialog boks mal består av et hode som beskriver dialogboksen, etterfulgt av én eller flere flere blokker med data som beskriver hver av kontrollene i dialogboksen. Malen kan bruke standard format eller formatet utvidet.

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.

hWndParent
Identifiserer vinduet som eier dialogboksen.
lpDialogFunc
Pekeren til dialogboksen boksen prosedyre. Hvis du vil ha mer informasjon om dialogboksen boksen fremgangsmåten, kan du se DialogProc.

Returverdier

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.

Merknader

DialogBoxIndirect makroen bruker CreateWindowEx -funksjonen til å opprette dialogboksen. DialogBoxIndirect 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 , DialogBoxIndirect ø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: Ikke alle stiler støttes i DLGTEMPLATE -strukturen i dialogboksen malen referert til av parameteren lpTemplate .

Hurtiginformasjon

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.

Se også

Oversikt over dialogboksen-boksene, dialogboksen boksen-funksjoner, CreateWindowEx, DialogBox, DialogBoxIndirectParam, DialogBoxParam, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT

Index