HRESULT CScript::RunMacro( LPCTSTR pszMacroName ) { DISPID dispid; COleDispatchDriver driver; BOOL tFound; ASSERT( pszMacroName != NULL ); tFound = m_mapMacros.Lookup( pszMacroName, dispid ); if( !tFound ) { return( DISP_E_MEMBERNOTFOUND ); } driver.AttachDispatch( m_pDispatch, FALSE ); try { driver.InvokeHelper( dispid, DISPATCH_METHOD, VT_EMPTY, NULL, VTS_NONE ); } catch( COleDispatchException* pException ) { CString strMessage; AfxFormatString1( strMessage, IDS_DISPATCHEXCEPTION, pException->m_strDescription ); AfxMessageBox( strMessage ); pException->Delete(); } catch( COleException* pException ) { pException->Delete(); } return( S_OK ); }
void CElementPropPage::AddElement() { // Needed for Unicode conversion functions USES_CONVERSION; // Get the dispatch of the control LPDISPATCH lpControl = GetControlDispatch(); // Update the control using automation calls COleDispatchDriver PropDispDriver; DISPID dwDispID; // Get a Unicode string LPCOLESTR lpOleStr = T2COLE(L"AddElement" ); if (SUCCEEDED( lpControl->GetIDsOfNames(IID_NULL, (LPOLESTR*)&lpOleStr, 1, 0, &dwDispID))) { PropDispDriver.AttachDispatch( lpControl, FALSE); PropDispDriver.InvokeHelper( dwDispID, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); PropDispDriver.DetachDispatch(); } }
void CDownloads_Opinions_WBEvents::OnDocumentComplete(LPDISPATCH pdWB, VARIANT *URL) { IWebBrowser2Ptr spWB (pdWB); if (spWB == NULL) return; IDispatchPtr spdDoc; spWB->get_Document (&spdDoc); IHTMLDocumentPtr spDoc (spdDoc); if (spDoc == NULL) return; ICustomDocPtr spCD (spDoc); if (spCD != NULL) spCD->SetUIHandler (&m_wbUIHandler); bool bSetTab = false; if (m_pwndOpinions->m_cSetAsCurrentTabAfterLoadComplete) { InterlockedDecrement (&m_pwndOpinions->m_cSetAsCurrentTabAfterLoadComplete); bSetTab = true; } if (m_pwndOpinions->m_dld == NULL) return; if (bSetTab) _pwndDownloads->m_wndDownloads.m_info.set_CurTab (DIT_OPINIONS); IDispatch *pdScript; spDoc->get_Script (&pdScript); if (pdScript == NULL) return; DISPID didFun; OLECHAR* pwszFunName = L"processform"; HRESULT hr; hr = pdScript->GetIDsOfNames (IID_NULL, &pwszFunName, 1, LOCALE_SYSTEM_DEFAULT, &didFun); if (FAILED (hr)) return; COleVariant vtResult; BYTE params [] = {VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR}; CString strVersion; CMainFrame* pFrm = (CMainFrame*)AfxGetApp ()->m_pMainWnd; strVersion.Format ("%s_%d", vmsFdmAppMgr::getBuildNumberAsString (), pFrm->m_Customizations.get_AffiliateID ()); CString strState; if (m_pwndOpinions->m_dld->pMgr->IsDone ()) strState = "Downloaded"; else if (m_pwndOpinions->m_dld->pMgr->IsRunning ()) strState = "Downloading"; else strState = "Paused"; CString strSize; UINT64 u = m_pwndOpinions->m_dld->pMgr->GetSSFileSize (); if (u != _UI64_MAX) { char sz [100]; _i64toa ((__int64)u, sz, 10); strSize = sz; } else strSize = "Unknown"; CString strComment = m_pwndOpinions->m_dld->strComment; strComment.Replace ("\r\n", " "); strComment.Replace ("\r", " "); strComment.Replace ("\n", " "); CString strUrl; if (m_pwndOpinions->m_dld->pMgr->IsBittorrent ()) strUrl = m_pwndOpinions->m_dld->pMgr->GetBtDownloadMgr ()->get_InfoHash (); else strUrl = m_pwndOpinions->m_dld->pMgr->get_URL (); COleDispatchDriver ddr (pdScript); ddr.InvokeHelper (didFun, DISPATCH_METHOD, VT_VARIANT, (void*)&vtResult, params, strVersion, strUrl, strComment, strState, strSize); RetrieveLinkToUsText (spdDoc); }
BOOL CFontPropPage::GetFontProps(CDataExchange* /* pDX */, FONTOBJECT* pfobj, LPCTSTR pszPropName, MERGEOBJECT* pmobj) { USES_CONVERSION; BOOL bStatus = FALSE; COleDispatchDriver PropDispDriver; ULONG nObjects; LPDISPATCH* ppDisp = GetObjectArray(&nObjects); for (ULONG i = 0; i < nObjects; i++) { DISPID dwDispID; // Get the Dispatch ID for the property and if successful get the value LPCOLESTR lpOleStr = T2COLE(pszPropName); if (SUCCEEDED(ppDisp[i]->GetIDsOfNames(IID_NULL, (LPOLESTR*)&lpOleStr, 1, m_lcid, &dwDispID))) { LPDISPATCH pFontDisp; // Get property PropDispDriver.AttachDispatch(ppDisp[i], FALSE); PropDispDriver.GetProperty(dwDispID, VT_DISPATCH, &pFontDisp); PropDispDriver.DetachDispatch(); if (pFontDisp == NULL) continue; // Get font interface IFont * pFont; HRESULT hresult = pFontDisp->QueryInterface(IID_IFont, (void**)&pFont); if (hresult == S_OK) { BOOL bTemp; // Set font characteristics OLECHAR *pszName; pFont->get_Name(&pszName); if (lstrcmp(OLE2CT(pszName), pfobj->strName) != 0 && i != 0) pmobj->bNameOK = FALSE; pfobj->strName = pszName; SysFreeString(pszName); CY cyTemp; pFont->get_Size(&cyTemp); if ((cyTemp.Lo != pfobj->cySize.Lo || cyTemp.Hi != pfobj->cySize.Hi) && i != 0) pmobj->bSizeOK = FALSE; pfobj->cySize = cyTemp; pFont->get_Bold(&bTemp); if (pfobj->bBold != bTemp && i != 0) pmobj->bStyleOK = FALSE; pfobj->bBold = bTemp; pFont->get_Italic(&bTemp); if (pfobj->bItalic != bTemp && i != 0) pmobj->bStyleOK = FALSE; pfobj->bItalic = bTemp; pFont->get_Underline(&bTemp); if (pfobj->bUnderline != bTemp && i != 0) pmobj->bUnderlineOK = FALSE; pfobj->bUnderline = bTemp; pFont->get_Strikethrough(&bTemp); if (pfobj->bStrikethrough != bTemp && i != 0) pmobj->bStrikethroughOK = FALSE; pfobj->bStrikethrough = bTemp; short sTemp; pFont->get_Weight(&sTemp); if (pfobj->sWeight != sTemp && i != 0) pmobj->bStyleOK = FALSE; pfobj->sWeight = sTemp; // Release the font interface RELEASE(pFont); bStatus = TRUE; } // Release font interface RELEASE(pFontDisp); } } return bStatus; }
BOOL CFontPropPage::SetFontProps(CDataExchange* pDX, FONTOBJECT fobj, LPCTSTR pszPropName) { USES_CONVERSION; BOOL bStatus = FALSE; COleDispatchDriver PropDispDriver; // Set the properties for all the objects ASSERT_KINDOF(COlePropertyPage, pDX->m_pDlgWnd); COlePropertyPage* propDialog = (COlePropertyPage*)(pDX->m_pDlgWnd); ULONG nObjects; LPDISPATCH* ppDisp = GetObjectArray(&nObjects); for (ULONG i = 0; i < nObjects; i++) { DISPID dwDispID; // Get the Dispatch ID for the property and if successful set the value LPCOLESTR lpOleStr = T2COLE(pszPropName); if (SUCCEEDED(ppDisp[i]->GetIDsOfNames(IID_NULL, (LPOLESTR*)&lpOleStr, 1, m_lcid, &dwDispID))) { LPDISPATCH pFontDisp = NULL; // Get property PropDispDriver.AttachDispatch(ppDisp[i], FALSE); TRY PropDispDriver.GetProperty(dwDispID, VT_DISPATCH, &pFontDisp); END_TRY PropDispDriver.DetachDispatch(); if (pFontDisp == NULL) continue; // Get font interface IFont * pFont; HRESULT hresult = pFontDisp->QueryInterface(IID_IFont, (void**)&pFont); if (hresult == S_OK) { // Set font characteristics if (propDialog->GetControlStatus(AFX_IDC_FONTNAMES)) { BSTR bstrName = fobj.strName.AllocSysString(); pFont->put_Name(bstrName); SysFreeString(bstrName); } if (propDialog->GetControlStatus(AFX_IDC_FONTSIZES)) pFont->put_Size(fobj.cySize); if (propDialog->GetControlStatus(AFX_IDC_FONTSTYLES)) { pFont->put_Bold(fobj.bBold); pFont->put_Italic(fobj.bItalic); pFont->put_Weight(fobj.sWeight); } if (propDialog->GetControlStatus(AFX_IDC_UNDERLINE)) pFont->put_Underline(fobj.bUnderline); if (propDialog->GetControlStatus(AFX_IDC_STRIKEOUT)) pFont->put_Strikethrough(fobj.bStrikethrough); // Release the font interface RELEASE(pFont); bStatus = TRUE; } // Release the font dispatch interface RELEASE(pFontDisp); } } return bStatus; }