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);
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.
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 .
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, DialogBoxIndirectParam, DialogBoxParam, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT