Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Implementeert de clientzijde van OLE-automatisering.
Syntaxis
class COleDispatchDriver
Leden
Openbare constructors
| Naam | Description |
|---|---|
| COleDispatchDriver::COleDispatchDriver | Maakt een COleDispatchDriver object. |
Openbare methoden
| Naam | Description |
|---|---|
| COleDispatchDriver::AttachDispatch | Hiermee wordt een IDispatch verbinding met het COleDispatchDriver object gekoppeld. |
| COleDispatchDriver::CreateDispatch | Hiermee maakt u een IDispatch verbinding en koppelt u deze aan het COleDispatchDriver object. |
| COleDispatchDriver::D etachDispatch | Er wordt een IDispatch verbinding losgekoppeld, zonder deze los te laten. |
| COleDispatchDriver::GetProperty | Hiermee haalt u een automatiseringseigenschap op. |
| COleDispatchDriver::InvokeHelper | Helper voor het aanroepen van automatiseringsmethoden. |
| COleDispatchDriver::ReleaseDispatch | Brengt een IDispatch verbinding vrij. |
| COleDispatchDriver::SetProperty | Hiermee stelt u een automatiseringseigenschap in. |
Openbare operators
| Naam | Description |
|---|---|
| COleDispatchDriver::operator = | Kopieert de bronwaarde naar het COleDispatchDriver object. |
| COleDispatchDriver::operator LPDISPATCH | Hiermee opent u de onderliggende IDispatch aanwijzer. |
Leden van openbare gegevens
| Naam | Description |
|---|---|
| COleDispatchDriver::m_bAutoRelease | Hiermee geeft u op of het vrijgeven van de IDispatch tijdens ReleaseDispatch of objectvernietiging. |
| COleDispatchDriver::m_lpDispatch | Geeft de aanwijzer aan op de IDispatch interface die aan deze COleDispatchDriverinterface is gekoppeld. |
Opmerkingen
COleDispatchDriver heeft geen basisklasse.
OLE-verzendinterfaces bieden toegang tot de methoden en eigenschappen van een object. Lidfuncties van COleDispatchDriver koppelen, loskoppelen, maken en vrijgeven van een verzendverbinding van het type IDispatch. Andere lidfuncties maken gebruik van lijsten met variabelenargumenten om het aanroepen IDispatch::Invokete vereenvoudigen.
Deze klasse kan rechtstreeks worden gebruikt, maar wordt meestal alleen gebruikt door klassen die zijn gemaakt door de wizard Klasse toevoegen. Wanneer u nieuwe C++-klassen maakt door een typebibliotheek te importeren, worden de nieuwe klassen afgeleid van COleDispatchDriver.
Zie de volgende artikelen voor meer informatie over het gebruik COleDispatchDriver:
Overnamehiërarchie
COleDispatchDriver
Requirements
Koptekst: afxdisp.h
COleDispatchDriver::AttachDispatch
Roep de AttachDispatch lidfunctie aan om een IDispatch aanwijzer aan het COleDispatchDriver object te koppelen. Zie De IDispatch-interface implementeren voor meer informatie.
void AttachDispatch(
LPDISPATCH lpDispatch,
BOOL bAutoRelease = TRUE);
Parameterwaarden
lpDispatch
Aanwijzer naar een OLE-object IDispatch dat aan het COleDispatchDriver object moet worden gekoppeld.
bAutoRelease
Hiermee geeft u op of de verzending moet worden vrijgegeven wanneer dit object buiten het bereik valt.
Opmerkingen
Met deze functie wordt een IDispatch aanwijzer vrijgegeven die al aan het COleDispatchDriver object is gekoppeld.
Example
void COleContainerView::OnAttachDispatch()
{
CLSID clsidWMP;
LPDISPATCH pWMPDispatch = NULL;
COleDispatchDriver oddWMP;
try
{
AfxCheckError(::CLSIDFromProgID(_T("WMPlayer.OCX"), &clsidWMP));
AfxCheckError(::CoCreateInstance(clsidWMP, NULL, CLSCTX_INPROC_SERVER,
IID_IDispatch, (LPVOID*)& pWMPDispatch));
oddWMP.AttachDispatch(pWMPDispatch, TRUE);
pWMPDispatch = NULL; // our COleDispatchDriver now owns the interface
CString strUIMode;
oddWMP.GetProperty(23, VT_BSTR, (void*)& strUIMode);
TRACE(_T("WMP uiMode is %s.\n"), strUIMode);
}
catch (COleException* pe)
{
pe->ReportError();
pe->Delete();
}
catch (CMemoryException* pe)
{
pe->ReportError();
pe->Delete();
}
// cleanup
if (NULL != pWMPDispatch)
{
pWMPDispatch->Release();
}
// COleDispatchDriver automatically releases the dispatch interface when
// it goes out of scope if m_bAutoRelease is TRUE.
}
COleDispatchDriver::COleDispatchDriver
Maakt een COleDispatchDriver object.
COleDispatchDriver();
COleDispatchDriver(LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE);
COleDispatchDriver(const COleDispatchDriver& dispatchSrc);
Parameterwaarden
lpDispatch
Aanwijzer naar een OLE-object IDispatch dat aan het COleDispatchDriver object moet worden gekoppeld.
bAutoRelease
Hiermee geeft u op of de verzending moet worden vrijgegeven wanneer dit object buiten het bereik valt.
dispatchSrc
Verwijzing naar een bestaand COleDispatchDriver object.
Opmerkingen
Het formulier COleDispatchDriver( LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE ) verbindt de IDispatch-interface .
In het formulier COleDispatchDriver( const COleDispatchDriver& dispatchSrc ) wordt een bestaand COleDispatchDriver object gekopieerd en wordt het aantal verwijzingen verhoogd.
Het formulier COleDispatchDriver( ) maakt een COleDispatchDriver object, maar verbindt de IDispatch interface niet.
COleDispatchDriver( ) Voordat u zonder argumenten gebruikt, moet u er een IDispatch verbinding mee maken met behulp van COleDispatchDriver::CreateDispatch of COleDispatchDriver::AttachDispatch. Zie De IDispatch-interface implementeren voor meer informatie.
Example
Zie het voorbeeld voor COleDispatchDriver::CreateDispatch.
COleDispatchDriver::CreateDispatch
Hiermee maakt u een IDispatch-interfaceobject en koppelt u het aan het COleDispatchDriver object.
BOOL CreateDispatch(
REFCLSID clsid,
COleException* pError = NULL);
BOOL CreateDispatch(
LPCTSTR lpszProgID,
COleException* pError = NULL);
Parameterwaarden
clsid
Klasse-id van het IDispatch verbindingsobject dat moet worden gemaakt.
pError
Wijs een OLE-uitzonderingsobject aan, waarin de statuscode wordt opgeslagen die het gevolg is van het maken.
lpszProgID
Wijs de programmatische id, zoals Excel.Document.5, aan van het automatiseringsobject waarvoor het verzendobject moet worden gemaakt.
Retourwaarde
Nonzero op succes; anders 0.
Example
void COleContainerView::OnCreateDispatch()
{
COleDispatchDriver disp;
COleException* pe = new COleException;
try
{
// Create instance of Microsoft System Information Control
// by using ProgID.
if (disp.CreateDispatch(_T("WMPlayer.OCX"), pe))
{
//Get uiMode.
CString strUIMode;
disp.InvokeHelper(23, DISPATCH_PROPERTYGET, VT_BSTR,
(void*)& strUIMode, NULL);
CString strMsg;
strMsg.Format(_T("WMP uiMode is %s."), strUIMode);
AfxMessageBox(strMsg);
}
else
{
throw pe;
}
}
//Catch control-specific exceptions.
catch (COleDispatchException* pe)
{
CString cStr;
if (!pe->m_strSource.IsEmpty())
cStr = pe->m_strSource + _T(" - ");
if (!pe->m_strDescription.IsEmpty())
cStr += pe->m_strDescription;
else
cStr += _T("unknown error");
AfxMessageBox(cStr, MB_OK,
(pe->m_strHelpFile.IsEmpty()) ? 0 : pe->m_dwHelpContext);
pe->Delete();
}
//Catch all MFC exceptions, including COleExceptions.
// OS exceptions will not be caught.
catch (CException* pe)
{
TRACE(_T("%s(%d): OLE Execption caught: SCODE = %x"),
__FILE__, __LINE__, COleException::Process(pe));
pe->Delete();
}
pe->Delete();
}
COleDispatchDriver::D etachDispatch
Hiermee wordt de huidige IDispatch verbinding van dit object losgekoppeld.
LPDISPATCH DetachDispatch();
Retourwaarde
Een aanwijzer naar het eerder gekoppelde OLE-object IDispatch .
Opmerkingen
De IDispatch is niet vrijgegeven.
Zie De IDispatch-interface implementeren in de Windows SDK voor meer informatie over het type LPDISPATCH.
Example
LPDISPATCH CreateLPDispatch(LPCTSTR lpszProgId)
{
COleDispatchDriver disp;
disp.CreateDispatch(lpszProgId);
return disp.DetachDispatch();
}
COleDispatchDriver::GetProperty
Hiermee haalt u de objecteigenschap op die is opgegeven door dwDispID.
void GetProperty(
DISPID dwDispID,
VARTYPE vtProp,
void* pvProp) const;
Parameterwaarden
dwDispID
Identificeert de eigenschap die moet worden opgehaald.
vtProp
Hiermee geeft u de eigenschap die moet worden opgehaald. Zie de sectie Opmerkingen voor COleDispatchDriver::InvokeHelper voor mogelijke waarden.
pvProp
Adres van de variabele die de eigenschapswaarde ontvangt. Het moet overeenkomen met het type dat is opgegeven door vtProp.
Example
CString IMyComObject::GetString(DISPID dispid)
{
CString result;
GetProperty(dispid, VT_BSTR, (void*)& result);
return result;
}
COleDispatchDriver::InvokeHelper
Roept de objectmethode of eigenschap aan die is opgegeven door dwDispID, in de context die is opgegeven door wFlags.
void AFX_CDECL InvokeHelper(
DISPID dwDispID,
WORD wFlags,
VARTYPE vtRet,
void* pvRet,
const BYTE* pbParamInfo, ...);
Parameterwaarden
dwDispID
Identificeert de methode of eigenschap die moet worden aangeroepen.
wFlags
Vlaggen met een beschrijving van de context van de aanroep naar IDispatch::Invoke. . Zie de parameter wFlags in IDispatch::Invoke in de Windows SDK voor een lijst met mogelijke waarden.
vtRet
Hiermee geeft u het type van de retourwaarde. Zie de sectie Opmerkingen voor mogelijke waarden.
pvRet
Adres van de variabele die de eigenschapswaarde of retourwaarde ontvangt. Het moet overeenkomen met het type dat is opgegeven door vtRet.
pbParamInfo
Aanwijzer naar een tekenreeks met null-beëindiging van bytes die de typen parameters opgeeft die volgen op pbParamInfo.
...
Variabele lijst met parameters, van typen die zijn opgegeven in pbParamInfo.
Opmerkingen
De parameter pbParamInfo specificeert de typen parameters die worden doorgegeven aan de methode of eigenschap. De lijst met variabelen met argumenten wordt vertegenwoordigd door ... in de syntaxisdeclaratie.
Mogelijke waarden voor het argument vtRet worden opgehaald uit de OPSOMMING VARENUM. Mogelijke waarden zijn als volgt:
| Symbol | Retourtype |
|---|---|
| VT_EMPTY | void |
| VT_I2 | short |
| VT_I4 | long |
| VT_R4 | float |
| VT_R8 | double |
| VT_CY | CY |
| VT_DATE | DATUM |
| VT_BSTR | BSTR |
| VT_DISPATCH | LPDISPATCH |
| VT_ERROR | SCODE |
| VT_BOOL | BOOL |
| VT_VARIANT | VARIANTE |
| VT_UNKNOWN | LPUNKNOWN |
Het argument pbParamInfo is een door spaties gescheiden lijst met VTS_ constanten. Een of meer van deze waarden, gescheiden door spaties (geen komma's), geeft de parameterlijst van de functie op. Mogelijke waarden worden weergegeven met de macro EVENT_CUSTOM .
Met deze functie worden de parameters geconverteerd naar VARIANTARG-waarden en wordt vervolgens de methode IDispatch::Invoke aangeroepen. Als de aanroep mislukt Invoke , genereert deze functie een uitzondering. Als de SCODE (statuscode) die wordt geretourneerd IDispatch::Invoke door DISP_E_EXCEPTION is, genereert deze functie een COleException-object ; anders wordt er een COleDispatchException gegenereerd.
Zie VARIANTARG, De IDispatch-interface,IDispatch::Invoke en structuur van COM-foutcodes implementeren in de Windows SDK voor meer informatie.
Example
Zie het voorbeeld voor COleDispatchDriver::CreateDispatch.
COleDispatchDriver::m_bAutoRelease
Indien WAAR, wordt het COM-object dat wordt geopend door m_lpDispatch automatisch vrijgegeven wanneer ReleaseDispatch wordt aangeroepen of wanneer dit COleDispatchDriver object wordt vernietigd.
BOOL m_bAutoRelease;
Opmerkingen
m_bAutoRelease Standaard is ingesteld op TRUE in de constructor.
Zie Reference Counting en IUnknown::Release in de Windows SDK voor meer informatie over het vrijgeven van COM-objecten.
Example
// Clean up by forcing Release to be called
// on COleDispatchDriver object and delete
if (bError)
{
pDisp->m_bAutoRelease = TRUE;
delete pDisp;
pDisp = NULL;
}
COleDispatchDriver::m_lpDispatch
De aanwijzer naar de IDispatch interface die aan deze COleDispatchDriverinterface is gekoppeld.
LPDISPATCH m_lpDispatch;
Opmerkingen
Het m_lpDispatch gegevenslid is een openbare variabele van het type LPDISPATCH.
Zie IDispatch in de Windows SDK voor meer informatie.
Example
Zie het voorbeeld voor COleDispatchDriver::AttachDispatch.
COleDispatchDriver::operator =
Kopieert de bronwaarde naar het COleDispatchDriver object.
const COleDispatchDriver& operator=(const COleDispatchDriver& dispatchSrc);
Parameterwaarden
dispatchSrc
Een aanwijzer naar een bestaand COleDispatchDriver object.
COleDispatchDriver::operator LPDISPATCH
Hiermee opent u de onderliggende IDispatch aanwijzer van het COleDispatchDriver object.
operator LPDISPATCH();
Example
COleDispatchDriver disp;
if (disp.CreateDispatch(_T("WMPlayer.OCX")))
{
IDispatch* pDispatch = disp; //COleDispatchDriver::operator
//LPDISPATCH is called here
IUnknown* pUnkn = NULL;
HRESULT hr = pDispatch->QueryInterface(IID_IUnknown, (void**)& pUnkn);
if (SUCCEEDED(hr))
{
//Do something...
pUnkn->Release();
}
}
COleDispatchDriver::ReleaseDispatch
Hiermee wordt de IDispatch verbinding vrijgegeven. Zie De IDispatch-interface implementeren voor meer informatie
void ReleaseDispatch();
Opmerkingen
Als automatische release is ingesteld voor deze verbinding, roept IDispatch::Release deze functie aan voordat de interface wordt vrijgegeven.
Example
Zie het voorbeeld voor COleDispatchDriver::AttachDispatch.
COleDispatchDriver::SetProperty
Hiermee stelt u de ole-objecteigenschap in die is opgegeven door dwDispID.
void AFX_CDECL SetProperty(
DISPID dwDispID,
VARTYPE vtProp, ...);
Parameterwaarden
dwDispID
Identificeert de eigenschap die moet worden ingesteld.
vtProp
Hiermee geeft u het type van de eigenschap die moet worden ingesteld. Zie de sectie Opmerkingen voor COleDispatchDriver::InvokeHelper voor mogelijke waarden.
...
Eén parameter van het type dat is opgegeven door vtProp.
Example
void IMyComObject::SetString(DISPID dispid, LPCTSTR propVal)
{
SetProperty(dispid, VT_BSTR, propVal);
}
Zie ook
MFC-voorbeeld CALCDRIV
MFC-voorbeeld ACDUAL
Hiërarchiegrafiek
CCmdTarget-klasse