DialogBoxIndirect

De DialogBoxIndirect macro maakt een modaal dialoogvenster van een dialoogvenster vak sjabloon in het geheugen. DialogBoxIndirect retourneert geen controle totdat de opgegeven callback functie beëindigt het modale dialoogvenster in door het aanroepen van de functie EndDialog . De macro DialogBoxIndirect wordt de functie DialogBoxIndirectParam gebruikt.

int () DialogBoxIndirect HINSTANCE  hInstance, / / ingang naar toepassingsexemplaarLPDLGTEMPLATElpTemplate, / / identificeert dialoogvenster vak sjabloonHWNDhWndParent, / / verwerken naar eigenaar vensterDLGPROClpDialogFunc / / aanwijzer aan dialog box procedure);
 

Parameters

hInstance
Geeft het exemplaar van de module waarmee het dialoogvenster.
lpTemplate
Aanwijzer naar een globale geheugen-object met een sjabloon die DialogBoxIndirect gebruikt om het dialoogvenster te maken. Een dialoogvenster vak sjabloon bestaat uit een header die wordt beschreven van het dialoogvenster, gevolgd door een of meer extra blokken gegevens die elk van de besturingselementen in het dialoogvenster beschrijven. De sjabloon kunt gebruiken de standaard opmaak of de uitgebreide indeling.

De header is in een standaard template voor een dialoogvenster, een DLGTEMPLATE structuur gevolgd door extra arrays van variabele lengte. De gegevens voor elk besturingselement bestaat uit een structuur van DLGITEMTEMPLATE gevolgd door extra arrays van variabele lengte.

In een uitgebreide sjabloon naar een dialoogvenster, de kop de indeling DLGTEMPLATEEX gebruikt en de definities van de controle de notatie DLGITEMTEMPLATEEX gebruiken.

hWndParent
Het venster dat eigenaar is van het dialoogvenster identificeert.
lpDialogFunc
Verwijzing naar het dialoogvenster vak procedure. Zie voor meer informatie over het dialoogvenster vak procedure, DialogProc.

Retourwaarden

Als de functie slaagt, is de geretourneerde waarde de nResult parameter in de aanroep naar de functie van de EndDialog die werd gebruikt om te eindigen in het dialoogvenster opgegeven.

Als de functie mislukt, is de geretourneerde waarde –1. Te krijgen uitgebreide foutinformatie, Bel GetLastError.

Opmerkingen

De macro DialogBoxIndirect wordt de functie CreateWindowEx gebruikt om het dialoogvenster te maken. DialogBoxIndirect stuurt een WM_INITDIALOG -bericht naar het dialoogvenster vak procedure. Als de sjabloon de DS_SETFONT stijl geeft, verzendt de functie ook een WM_SETFONT -bericht naar het dialoogvenster vak procedure. De functie wordt weergegeven in het dialoogvenster (ongeacht of de sjabloon de WS_VISIBLE stijl geeft), schakelt de eigenaar venster, en begint zijn eigen lus bericht ophalen en verzenden van berichten van het dialoogvenster.

Wanneer het dialoogvenster vak procedure de functie EndDialog roept , DialogBoxIndirect vernietigt het dialoogvenster, eindigt de lus bericht, kunt het venster van de eigenaar (indien ingeschakeld) en retourneert de nResult parameter opgegeven door het dialoogvenster vak procedure toen het genoemd EndDialog.

In een standaard dialoogvenster vak sjabloon, moeten de DLGTEMPLATE structuur en elk van de DLGITEMTEMPLATE structuren worden uitgelijnd op DWORD grenzen. De creatie data array die een DLGITEMTEMPLATE structuur volgt moet ook worden uitgelijnd op een DWORD grens. Alle van de andere arrays van variabele lengte in de sjabloon moet moet worden uitgelijnd op woordgrenzen.

In een uitgebreide dialoogvenster vak sjabloon, moeten de header DLGTEMPLATEEX en elk van de DLGITEMTEMPLATEEX controle definities worden uitgelijnd op DWORD grenzen. De creatie data array, als een, die een DLGITEMTEMPLATEEX structuur volgt moet ook worden uitgelijnd op een DWORD grens. Alle van de andere arrays van variabele lengte in de sjabloon moet worden uitgelijnd op woordgrenzen.

Alle tekenreeksen in het dialoogvenster vak sjabloon, zoals titels voor de knoppen, en het dialoogvenster moeten worden Unicode-tekenreeksen. Gebruik de functie MultiByteToWideChar voor het genereren van deze Unicode-tekenreeksen om code die op zowel Windows als Windows NT werkt maken,.

Windows 95 en hoger:Het systeem kan maximaal 255 besturingselementen per dialoogvenster vak sjabloon ondersteunen. Meer dan 255 besturingselementen in het dialoogvenster plaatsen, maakt u de besturingselementen in de handler WM_INITDIALOG bericht eerder dan het plaatsen van hen in de sjabloon.

Windows CE: Niet alle opmaakprofielen worden ondersteund in de DLGTEMPLATE structuur in het dialoogvenster sjabloon waarnaar door de parameter lpTemplate .

Syntaxisinfo

nbsp; Windows &NT: versie 3.1 of hoger vereist.
Windows:Windows 95 of hoger vereist.
Windows CE:Versie 1.0 of hoger vereist.
Header:Verklaard in winuser.h.
Bibliotheek importeren:User32.lib gebruiken.
Unicode:Geïmplementeerd als Unicode en ANSI-versies van Windows NT.

Zie ook

Overzicht van dialoogvenster vakken, dialoogvenster vak functies, CreateWindowEx, DialogBox, DialogBoxIndirectParam, DialogBoxParam, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT

Index