Delen via


Verzendkaarten

Opmerking

De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

OLE Automation biedt manieren om methoden aan te roepen en toegang te krijgen tot eigenschappen in verschillende toepassingen. Het mechanisme dat wordt geleverd door de Microsoft Foundation Class Library voor het verzenden van deze aanvragen, is de 'verzendkaart', die de interne en externe namen van objectfuncties en -eigenschappen aanwijst, evenals de gegevenstypen van de eigenschappen zelf en van functieargumenten.

Kaartmacro Verzenden Description
DECLARE_DISPATCH_MAP Declareert dat een verzendkaart wordt gebruikt om de methoden en eigenschappen van een klasse beschikbaar te maken (moet worden gebruikt in de klassedeclaratie).
BEGIN_DISPATCH_MAP Hiermee start u de definitie van een verzendkaart.
END_DISPATCH_MAP Hiermee wordt de definitie van een verzendkaart beëindigd.
DISP_FUNCTION Wordt gebruikt in een verzendkaart om een OLE-automatiseringsfunctie te definiëren.
DISP_PROPERTY Definieert een OLE-automatiseringseigenschap.
DISP_PROPERTY_EX Definieert een OLE-automatiseringseigenschap en noemt de functies Ophalen en instellen.
DISP_PROPERTY_NOTIFY Definieert een OLE-automatiseringseigenschap met melding.
DISP_PROPERTY_PARAM Definieert een OLE-automatiseringseigenschap die parameters gebruikt en de functies Ophalen en instellen een naam geeft.
DISP_DEFVALUE Hiermee maakt u een bestaande eigenschap de standaardwaarde van een object.

DECLARE_DISPATCH_MAP

Als een CCmdTarget-afgeleide klasse in uw programma OLE Automation ondersteunt, moet die klasse een verzendkaart opgeven om de bijbehorende methoden en eigenschappen beschikbaar te maken.

DECLARE_DISPATCH_MAP()

Opmerkingen

Gebruik de DECLARE_DISPATCH_MAP macro aan het einde van uw klasdeclaratie. Dan, in de . CPP-bestand dat de lidfuncties voor de klasse definieert, gebruikt u de BEGIN_DISPATCH_MAP macro. Voeg vervolgens macrovermeldingen toe voor de beschikbare methoden en eigenschappen van uw klas (DISP_FUNCTION, DISP_PROPERTY enzovoort). Gebruik ten slotte de macro END_DISPATCH_MAP.

Opmerking

Als u na DECLARE_DISPATCH_MAP leden declareert, moet u een nieuw toegangstype ( public, privateof protected) voor hen opgeven.

De wizard Toepassing en codewizards helpen bij het maken van Automation-klassen en bij het onderhouden van verzendkaarten. Zie Automation-servers voor meer informatie over verzendkaarten.

Example

class CMyServerDoc : public COleServerDoc
{
   DECLARE_DISPATCH_MAP()

   // Remainder of class declaration omitted.

Requirements

Koptekst: afxwin.h

BEGIN_DISPATCH_MAP

Declareert de definitie van uw verzendkaart.

BEGIN_DISPATCH_MAP(theClass, baseClass)

Parameterwaarden

theClass
Hiermee geeft u de naam van de klasse die eigenaar is van deze verzendkaart.

baseClass
Hiermee geeft u de basisklassenaam van theClass.

Opmerkingen

In het implementatiebestand (.cpp) dat de lidfuncties voor uw klasse definieert, start u de verzendkaart met de BEGIN_DISPATCH_MAP macro, voegt u macrovermeldingen toe voor elk van uw verzendfuncties en -eigenschappen en voltooit u de verzendkaart met de END_DISPATCH_MAP macro.

Requirements

Koptekst: afxdisp.h

END_DISPATCH_MAP

Hiermee wordt de definitie van uw verzendkaart beëindigd.

END_DISPATCH_MAP()

Opmerkingen

Deze moet worden gebruikt in combinatie met BEGIN_DISPATCH_MAP.

Requirements

Koptekst: afxdisp.h

DISP_FUNCTION

Definieert een OLE-automatiseringsfunctie in een verzendkaart.

DISP_FUNCTION(
    theClass,
    pszName,
    pfnMember,
    vtRetVal,
    vtsParams)

Parameterwaarden

theClass
Naam van de klasse.

pszName
Externe naam van de functie.

pfnMember
Naam van de lidfunctie.

vtRetVal
Een waarde die het retourtype van de functie aangeeft.

vtsParams
Een door spaties gescheiden lijst met een of meer constanten waarmee de parameterlijst van de functie wordt opgegeven.

Opmerkingen

Het argument vtRetVal is van het type VARTYPE. De volgende mogelijke waarden voor dit argument zijn afkomstig uit de VARENUM opsomming:

Symbol Resultaattype
VT_EMPTY void
VT_I2 short
VT_I4 long
VT_R4 float
VT_R8 double
VT_CY CY
VT_DATE DATE
VT_BSTR BSTR
VT_DISPATCH LPDISPATCH
VT_ERROR SCODE
VT_BOOL BOOL
VT_VARIANT VARIANT
VT_UNKNOWN LPUNKNOWN

Het argument vtsParams is een door spaties gescheiden lijst met waarden uit de VTS_* constanten. Een of meer van deze waarden gescheiden door spaties (geen komma's) specificeert de parameterlijst van de functie. Bijvoorbeeld

VTS_I2 VTS_PI2

geeft een lijst op die een kort geheel getal bevat, gevolgd door een aanwijzer naar een kort geheel getal.

De VTS_ constanten en hun betekenissen zijn als volgt:

Symbol Parametertype
VTS_I2 short
VTS_I4 long
VTS_R4 float
VTS_R8 double
VTS_CY const CY of CY*
VTS_DATE DATE
VTS_BSTR LPCSTR
VTS_DISPATCH LPDISPATCH
VTS_SCODE SCODE
VTS_BOOL BOOL
VTS_VARIANT const VARIANT* of VARIANT&
VTS_UNKNOWN LPUNKNOWN
VTS_PI2 Korte*
VTS_PI4 Lange*
VTS_PR4 Float*
VTS_PR8 Dubbele*
VTS_PCY CY*
VTS_PDATE DATE*
VTS_PBSTR BSTR*
VTS_PDISPATCH LPDISPATCH*
VTS_PSCODE SCODE*
VTS_PBOOL BOOL*
VTS_PVARIANT VARIANT*
VTS_PUNKNOWN LPUNKNOWN*
VTS_NONE Geen parameters

Requirements

Koptekst: afxdisp.h

DISP_PROPERTY

Definieert een OLE-automatiseringseigenschap in een verzendkaart.

DISP_PROPERTY(
    theClass,
    pszName,
    memberName,
    vtPropType)

Parameterwaarden

theClass
Naam van de klasse.

pszName
Externe naam van de eigenschap.

memberName
Naam van de lidvariabele waarin de eigenschap wordt opgeslagen.

vtPropType
Een waarde die het type van de eigenschap aangeeft.

Opmerkingen

Het argument vtPropType is van het type VARTYPE. Mogelijke waarden voor dit argument zijn afkomstig uit de OPSOMMING VARENUM:

Symbol Eigenschapstype
VT_I2 short
VT_I4 long
VT_R4 float
VT_R8 double
VT_CY CY
VT_DATE DATE
VT_BSTR CString
VT_DISPATCH LPDISPATCH
VT_ERROR SCODE
VT_BOOL BOOL
VT_VARIANT VARIANT
VT_UNKNOWN LPUNKNOWN

Wanneer een externe client de eigenschap wijzigt, verandert de waarde van de lidvariabele die is opgegeven door memberName ; er is geen melding van de wijziging.

Requirements

Koptekst: afxdisp.h

DISP_PROPERTY_EX

Definieert een OLE-automatiseringseigenschap en noem de functies die worden gebruikt voor het ophalen en instellen van de waarde van de eigenschap in een verzendkaart.

DISP_PROPERTY_EX(
    theClass,
    pszName,
    memberGet,
    memberSet,
    vtPropType)

Parameterwaarden

theClass
Naam van de klasse.

pszName
Externe naam van de eigenschap.

lidOphalen
De naam van de lidfunctie die wordt gebruikt om de eigenschap op te halen.

memberSet
De naam van de lidfunctie die wordt gebruikt om de eigenschap in te stellen.

vtPropType
Een waarde die het type van de eigenschap aangeeft.

Opmerkingen

De functies memberGet en memberSet hebben handtekeningen die worden bepaald door het argument vtPropType . De functie memberGet heeft geen argumenten en retourneert een waarde van het type dat is opgegeven door vtPropType. De functie memberSet gebruikt een argument van het type dat is opgegeven door vtPropType en retourneert niets.

Het argument vtPropType is van het type VARTYPE. Mogelijke waarden voor dit argument worden genomen uit de OPSOMMING VARENUM. Zie de opmerkingen voor de parameter vtRetVal in DISP_FUNCTION voor een lijst met deze waarden. Houd er rekening mee dat VT_EMPTY, vermeld in de DISP_FUNCTION opmerkingen, niet is toegestaan als gegevenstype voor eigenschappen.

Requirements

Koptekst: afxdisp.h

DISP_PROPERTY_NOTIFY

Definieert een OLE-automatiseringseigenschap met melding in een verzendkaart.

DISP_PROPERTY_NOTIFY(
    theClass,
    szExternalName,
    memberName,
    pfnAfterSet,
    vtPropType)

Parameterwaarden

theClass
Naam van de klasse.

szExternalName
Externe naam van de eigenschap.

memberName
Naam van de lidvariabele waarin de eigenschap wordt opgeslagen.

pfnAfterSet
Naam van de meldingsfunctie voor szExternalName.

vtPropType
Een waarde die het type van de eigenschap aangeeft.

Opmerkingen

In tegenstelling tot eigenschappen die zijn gedefinieerd met DISP_PROPERTY, roept een eigenschap die is gedefinieerd met DISP_PROPERTY_NOTIFY automatisch de functie aan die is opgegeven door pfnAfterSet wanneer de eigenschap wordt gewijzigd.

Het argument vtPropType is van het type VARTYPE. Mogelijke waarden voor dit argument zijn afkomstig uit de OPSOMMING VARENUM:

Symbol Eigenschapstype
VT_I2 short
VT_I4 long
VT_R4 float
VT_R8 double
VT_CY CY
VT_DATE DATE
VT_BSTR CString
VT_DISPATCH LPDISPATCH
VT_ERROR SCODE
VT_BOOL BOOL
VT_VARIANT VARIANT
VT_UNKNOWN LPUNKNOWN

Requirements

Koptekst: afxdisp.h

DISP_PROPERTY_PARAM

Hiermee definieert u een eigenschap die wordt geopend met afzonderlijke Get en Set lidfuncties.

DISP_PROPERTY_PARAM(
    theClass,
    pszExternalName,
    pfnGet,
    pfnSet,
    vtPropType,
    vtsParams)

Parameterwaarden

theClass
Naam van de klasse.

pszExternalName
Externe naam van de eigenschap.

pfnGet
De naam van de lidfunctie die wordt gebruikt om de eigenschap op te halen.

pfnSet
De naam van de lidfunctie die wordt gebruikt om de eigenschap in te stellen.

vtPropType
Een waarde die het type van de eigenschap aangeeft.

vtsParams
Een tekenreeks met door spaties gescheiden VTS_* variantparametertypen, één voor elke parameter.

Opmerkingen

In tegenstelling tot de DISP_PROPERTY_EX macro kunt u met deze macro een lijst met parameters voor de eigenschap opgeven. Dit is handig voor het implementeren van eigenschappen die zijn geïndexeerd of geparameteriseerd.

Example

Houd rekening met de volgende declaratie van get- en setlidfuncties waarmee de gebruiker een specifieke rij en kolom kan aanvragen bij het openen van de eigenschap:

SHORT GetArray(SHORT row, SHORT column);
void SetArray(SHORT row, SHORT column, SHORT newVal);

Deze komen overeen met de volgende DISP_PROPERTY_PARAM macro in de verzendkaart voor besturingselementen:

DISP_PROPERTY_PARAM(CMFCActiveXControlCtrl, "Array", GetArray, SetArray, VT_I2, VTS_I2 VTS_I2)

Denk bijvoorbeeld aan de volgende functies voor het ophalen en instellen van leden:

IDispatch* GetItem(SHORT index1, SHORT index2, SHORT index3);
void SetItem(SHORT index1, SHORT index2, SHORT index3, IDispatch* pVal);

Deze komen overeen met de volgende DISP_PROPERTY_PARAM macro in de verzendkaart voor besturingselementen:

DISP_PROPERTY_PARAM(CMFCActiveXControlCtrl, "Item", GetItem, SetItem, VT_DISPATCH, VTS_I2 VTS_I2 VTS_I2)

Requirements

Koptekst: afxdisp.h

DISP_DEFVALUE

Hiermee maakt u een bestaande eigenschap de standaardwaarde van een object.

DISP_DEFVALUE(theClass, pszName)

Parameterwaarden

theClass
Naam van de klasse.

pszName
Externe naam van de eigenschap die de 'waarde' van het object vertegenwoordigt.

Opmerkingen

Met behulp van een standaardwaarde kunt u het automatiseringsobject eenvoudiger programmeren voor Visual Basic-toepassingen.

De 'standaardwaarde' van uw object is de eigenschap die wordt opgehaald of ingesteld wanneer een verwijzing naar een object geen eigenschap of lidfunctie opgeeft.

Requirements

Koptekst: afxdisp.h

Zie ook

macro's en globalen