COleDispatchDriver::CreateDispatch
Crea un oggetto interfaccia IDispatch e lo aggiunge all'oggetto COleDispatchDriver.
BOOL CreateDispatch(
REFCLSID clsid,
COleException* pError = NULL
);
BOOL CreateDispatch(
LPCTSTR lpszProgID,
COleException* pError = NULL
);
Parametri
clsid
ID della classe dell'oggetto connessione IDispatch da creare.pError
Puntatore a un oggetto eccezione OLE, che conterrà il codice di stato derivandole dalla creazione.lpszProgID
Il puntatore al ProgID, ad esempio "Excel.Document.5", oggetti ActiveX per il quale l'oggetto dispatch deve essere creato.
Valore restituito
Diverso da zero in esito positivo, in caso contrario 0.
Esempio
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();
}
Requisiti
Header: afxdisp.h
Vedere anche
Riferimenti
COleDispatchDriver::DetachDispatch
COleDispatchDriver::ReleaseDispatch