Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.
Implementálja az OLE automation ügyféloldalát.
Szemantika
class COleDispatchDriver
Tagok
Nyilvános konstruktorok
| Név | Description |
|---|---|
| COleDispatchDriver::COleDispatchDriver | Egy COleDispatchDriver objektumot hoz létre. |
Nyilvános metódusok
| Név | Description |
|---|---|
| COleDispatchDriver::AttachDispatch |
IDispatch Kapcsolatot csatol az COleDispatchDriver objektumhoz. |
| COleDispatchDriver::CreateDispatch | Létrehoz egy IDispatch kapcsolatot, és csatolja azt az COleDispatchDriver objektumhoz. |
| COleDispatchDriver::D etachDispatch | Leválasztja a IDispatch kapcsolatot anélkül, hogy felengedné. |
| COleDispatchDriver::GetProperty | Automatizálási tulajdonságot kap. |
| COleDispatchDriver::InvokeHelper | Segítő az automatizálási módszerek meghívásához. |
| COleDispatchDriver::ReleaseDispatch | Kapcsolatot ad IDispatch ki. |
| COleDispatchDriver::SetProperty | Automatizálási tulajdonság beállítása. |
Nyilvános operátorok
| Név | Description |
|---|---|
| COleDispatchDriver::operátor = | Másolja a forrásértéket az COleDispatchDriver objektumba. |
| COleDispatchDriver::operátor LPDISPATCH | Hozzáfér a mögöttes IDispatch mutatóhoz. |
Nyilvános adatok tagjai
| Név | Description |
|---|---|
| COleDispatchDriver::m_bAutoRelease | Megadja, hogy a rendszer felszabadítsa-e a közbeni ReleaseDispatch vagy objektummegsemmisítési IDispatch elemet. |
| COleDispatchDriver::m_lpDispatch | Az ehhez COleDispatchDrivera csatolandó felülethez tartozó mutatót IDispatch jelzi. |
Megjegyzések
COleDispatchDriver nem rendelkezik alaposztálysal.
Az OLE diszpécserfelületek hozzáférést biztosítanak egy objektum metódusaihoz és tulajdonságaihoz. Tagfüggvények csatolása COleDispatchDriver , leválasztása, létrehozása és feloldása típusú küldési IDispatchkapcsolat. Más tagfüggvények változó argumentumlistákkal egyszerűsítik a hívásokat IDispatch::Invoke.
Ez az osztály közvetlenül használható, de általában csak az Osztály hozzáadása varázsló által létrehozott osztályok használják. Amikor új C++ osztályokat hoz létre egy típustár importálásával, az új osztályok a következőből COleDispatchDriverszármaznak: .
A használattal COleDispatchDriverkapcsolatos további információkért tekintse meg a következő cikkeket:
Öröklési hierarchia
COleDispatchDriver
Requirements
Fejléc: afxdisp.h
COleDispatchDriver::AttachDispatch
Hívja meg a AttachDispatch tagfüggvényt, hogy egy mutatót IDispatch csatoljon az COleDispatchDriver objektumhoz. További információ: Az IDispatch felület implementálása.
void AttachDispatch(
LPDISPATCH lpDispatch,
BOOL bAutoRelease = TRUE);
Paraméterek
lpDispatch
Mutató az objektumhoz csatolandó OLE-objektumra IDispatchCOleDispatchDriver .
bAutoRelease
Meghatározza, hogy az objektum hatókörének túllépésekor a küldést fel kell-e szabadítani.
Megjegyzések
Ez a függvény felszabadítja IDispatch az objektumhoz már csatolt mutatót COleDispatchDriver .
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
Egy COleDispatchDriver objektumot hoz létre.
COleDispatchDriver();
COleDispatchDriver(LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE);
COleDispatchDriver(const COleDispatchDriver& dispatchSrc);
Paraméterek
lpDispatch
Mutató az objektumhoz csatolandó OLE-objektumra IDispatchCOleDispatchDriver .
bAutoRelease
Meghatározza, hogy az objektum hatókörének túllépésekor a küldést fel kell-e szabadítani.
dispatchSrc
Hivatkozás egy meglévő COleDispatchDriver objektumra.
Megjegyzések
Az űrlap COleDispatchDriver( LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE ) csatlakoztatja az IDispatch felületet.
Az űrlap COleDispatchDriver( const COleDispatchDriver& dispatchSrc ) átmásolja a meglévő COleDispatchDriver objektumot, és növeli a hivatkozás számát.
Az űrlap COleDispatchDriver( ) létrehoz egy objektumot COleDispatchDriver , de nem csatlakoztatja a IDispatch felületet. Mielőtt argumentumok nélkül használnaCOleDispatchDriver( ), a COleDispatchDriver::CreateDispatch vagy a COleDispatchDriver::AttachDispatch használatával kell csatlakoznia IDispatch hozzá. További információ: Az IDispatch felület implementálása.
Example
Lásd a COleDispatchDriver::CreateDispatch példát.
COleDispatchDriver::CreateDispatch
Létrehoz egy IDispatch interfészobjektumot, és csatolja az COleDispatchDriver objektumhoz.
BOOL CreateDispatch(
REFCLSID clsid,
COleException* pError = NULL);
BOOL CreateDispatch(
LPCTSTR lpszProgID,
COleException* pError = NULL);
Paraméterek
clsid
A létrehozandó kapcsolatobjektum osztályazonosítója IDispatch .
pError
Mutasson egy OLE kivételobjektumra, amely a létrehozásból eredő állapotkódot tárolja.
lpszProgID
Mutasson annak az automatizálási objektumnak a programozott azonosítójára,például az "Excel.Document.5"-ra, amelyhez létre kívánja hozni a küldő objektumot.
Visszaadott érték
Nonzero a siker; egyéb esetben 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
Leválasztja az aktuális IDispatch kapcsolatot erről az objektumról.
LPDISPATCH DetachDispatch();
Visszaadott érték
A korábban csatolt OLE-objektumra IDispatch mutató mutató.
Megjegyzések
A IDispatch nincs felszabadítva.
Az LPDISPATCH típusával kapcsolatos további információkért lásd az IDispatch-felület implementálását a Windows SDK-ban.
Example
LPDISPATCH CreateLPDispatch(LPCTSTR lpszProgId)
{
COleDispatchDriver disp;
disp.CreateDispatch(lpszProgId);
return disp.DetachDispatch();
}
COleDispatchDriver::GetProperty
Lekéri a dwDispID által megadott objektumtulajdonságot.
void GetProperty(
DISPID dwDispID,
VARTYPE vtProp,
void* pvProp) const;
Paraméterek
dwDispID
Azonosítja a lekérendő tulajdonságot.
vtProp
A lekérendő tulajdonságot adja meg. A lehetséges értékekért tekintse meg a COleDispatchDriver::InvokeHelper megjegyzéseket ismertető szakaszát.
pvProp
Annak a változónak a címe, amely megkapja a tulajdonság értékét. Meg kell egyeznie a vtProp által megadott típussal.
Example
CString IMyComObject::GetString(DISPID dispid)
{
CString result;
GetProperty(dispid, VT_BSTR, (void*)& result);
return result;
}
COleDispatchDriver::InvokeHelper
Meghívja a dwDispID által megadott objektummetódust vagy tulajdonságot a wFlags által megadott környezetben.
void AFX_CDECL InvokeHelper(
DISPID dwDispID,
WORD wFlags,
VARTYPE vtRet,
void* pvRet,
const BYTE* pbParamInfo, ...);
Paraméterek
dwDispID
Azonosítja a meghívandó metódust vagy tulajdonságot.
wFlags
A hívás IDispatch::Invokekörnyezetét leíró jelzők. . A lehetséges értékek listájáért tekintse meg a wFlags paramétert az IDispatch::Invoke in the Windows SDK-ban.
vtRet
A visszatérési érték típusát adja meg. A lehetséges értékekért tekintse meg a Megjegyzések szakaszt.
pvRet
Annak a változónak a címe, amely megkapja a tulajdonságértéket vagy a visszatérési értéket. Meg kell egyeznie a vtRet által megadott típussal.
pbParamInfo
Mutató egy null értékű bájtos sztringre, amely megadja a pbParamInfo utáni paraméterek típusait.
...
A pbParamInfo-ban megadott paraméterek változólistája.
Megjegyzések
A pbParamInfo paraméter megadja a metódusnak vagy tulajdonságnak átadott paraméterek típusait. Az argumentumok változólistáját ... jelöli a szintaxis deklarációjában.
A vtRet argumentum lehetséges értékei a VARENUM enumerálásból származnak. A lehetséges értékek a következők:
| Szimbólum | Visszatérési típus |
|---|---|
| VT_EMPTY | void |
| VT_I2 | short |
| VT_I4 | long |
| VT_R4 | float |
| VT_R8 | double |
| VT_CY | CY |
| VT_DATE | DÁTUM |
| VT_BSTR | BSTR |
| VT_DISPATCH | LPDISPATCH |
| VT_ERROR | SCODE |
| VT_BOOL | BOOL |
| VT_VARIANT | VÁLTOZAT |
| VT_UNKNOWN | LPUNKNOWN |
A pbParamInfo argumentum VTS_ állandók szóközzel elválasztott listája. Ezen értékek közül legalább egy szóközökkel (nem vesszőkkel) elválasztva határozza meg a függvény paraméterlistáját. A lehetséges értékek a EVENT_CUSTOM makróval vannak felsorolva.
Ez a függvény a paramétereket VARIANTARG értékekké alakítja, majd meghívja az IDispatch::Invoke metódust . Ha a hívás Invoke sikertelen, ez a függvény kivételt fog eredményezni. Ha a visszaadott IDispatch::Invoke SCODE (állapotkód) DISP_E_EXCEPTION, ez a függvény egy COleException objektumot küld, ellenkező esetben egy COleDispatchException objektumot ad vissza.
További információ: VARIANTARG, Implementing the IDispatch Interface, IDispatch::Invoke és Structure of COM Error Codes in the Windows SDK.
Example
Lásd a COleDispatchDriver::CreateDispatch példát.
COleDispatchDriver::m_bAutoRelease
Ha IGAZ, a m_lpDispatch által elért COM-objektum automatikusan ki lesz bocsátva a ReleaseDispatch meghívásakor vagy az COleDispatchDriver objektum megsemmisítésekor.
BOOL m_bAutoRelease;
Megjegyzések
Alapértelmezés szerint m_bAutoRelease igaz értékre van állítva a konstruktorban.
A COM-objektumok kiadásával kapcsolatos további információkért lásd: Implementing Reference Counting and IUnknown::Release in the Windows SDK.
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
Az ehhez COleDispatchDrivercsatolt felület mutatójaIDispatch.
LPDISPATCH m_lpDispatch;
Megjegyzések
Az m_lpDispatch adattag egy LPDISPATCH típusú nyilvános változó.
További információ: IDispatch a Windows SDK-ban.
Example
Lásd a COleDispatchDriver::AttachDispatch példát.
COleDispatchDriver::operátor =
Másolja a forrásértéket az COleDispatchDriver objektumba.
const COleDispatchDriver& operator=(const COleDispatchDriver& dispatchSrc);
Paraméterek
dispatchSrc
Egy meglévő COleDispatchDriver objektumra mutató mutató.
COleDispatchDriver::operátor LPDISPATCH
Hozzáfér az objektum alapjául szolgáló IDispatch mutatóhoz COleDispatchDriver .
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
Felszabadítja a IDispatch kapcsolatot. További információ: Az IDispatch-felület implementálása
void ReleaseDispatch();
Megjegyzések
Ha ehhez a kapcsolathoz beállította az automatikus kiadást, ez a függvény a felület felszabadítása előtt hívja IDispatch::Release meg a hívást.
Example
Lásd a COleDispatchDriver::AttachDispatch példát.
COleDispatchDriver::SetProperty
Beállítja a dwDispID által megadott OLE objektumtulajdonságot.
void AFX_CDECL SetProperty(
DISPID dwDispID,
VARTYPE vtProp, ...);
Paraméterek
dwDispID
Azonosítja a beállítani kívánt tulajdonságot.
vtProp
Megadja a beállítani kívánt tulajdonság típusát. A lehetséges értékekért tekintse meg a COleDispatchDriver::InvokeHelper megjegyzéseket ismertető szakaszát.
...
A vtProp által megadott típus egyetlen paramétere.
Example
void IMyComObject::SetString(DISPID dispid, LPCTSTR propVal)
{
SetProperty(dispid, VT_BSTR, propVal);
}
Lásd még
MFC-minta CALCDRIV
MFC-minta ACDUAL
hierarchiadiagram
CCmdTarget osztály