//OLECMDID_PRINT = 6, HRESULT CWtlHtmlView::ExecCommand( OLECMDID nCmdID, OLECMDEXECOPT nCmdExecOpt, VARIANTARG* pvarargIn, VARIANTARG* pvarargOut) { HRESULT hr=S_OK; LPDISPATCH lpDispatch = NULL; LPOLECOMMANDTARGET lpOleCommandTarget = NULL; try { m_spWebBrowser2->get_Document(&lpDispatch); if(lpDispatch==NULL) throw; OLECMDF eQuery ; // 'return value type for QueryStatusWB if(FAILED( m_spWebBrowser2->QueryStatusWB(OLECMDID_PRINT, &eQuery))) // 'get print command status throw; if(!( eQuery & OLECMDF_ENABLED) ) throw; lpDispatch->QueryInterface(IID_IOleCommandTarget, (void**)&lpOleCommandTarget); if(lpOleCommandTarget==NULL) throw; // Print contents of WebBrowser control. hr=lpOleCommandTarget->Exec(NULL, nCmdID, nCmdExecOpt, pvarargIn, pvarargOut); } catch(...) { hr=E_FAIL; } if(lpDispatch) lpDispatch->Release(); if(lpOleCommandTarget) lpOleCommandTarget->Release(); return hr; }
//------------------------------------------------------------------------------- // Name: HrExecCommand // Desc: Выполнить команду с параметром MSOCMDEXECOPT_PROMPTUSER или MSOCMDEXECOPT_DONTPROMPTUSER. //------------------------------------------------------------------------------- HRESULT COfsDhtmlEditCtrl::HrExecCommand( ULONG ucmdID, VARIANT* pVarIn, VARIANT* pVarOut, BOOL bPromptUser ) { HRESULT hr = S_OK; if ( m_pSite != NULL ) { LPOLECOMMANDTARGET pCommandTarget = m_pSite->GetCommandTarget(); if ( pCommandTarget != NULL ) { DWORD dwCmdOpt = 0; if (bPromptUser) dwCmdOpt = MSOCMDEXECOPT_PROMPTUSER; else dwCmdOpt = MSOCMDEXECOPT_DONTPROMPTUSER; hr = pCommandTarget->Exec(&GUID_TriEditCommandGroup, ucmdID, dwCmdOpt, pVarIn, pVarOut); } } return hr; }
//------------------------------------------------------------------------------- // Name: HrExecDefault // Desc: Выполнить команду с параметром OLECMDEXECOPT_DODEFAULT. //------------------------------------------------------------------------------- HRESULT COfsDhtmlEditCtrl::HrExecDefault(ULONG ucmdID,VARIANT* pVarIn) { HRESULT hr = S_OK; if ( m_pSite != NULL ) { LPOLECOMMANDTARGET pCommandTarget = m_pSite->GetCommandTarget(); if ( pCommandTarget != NULL ) { hr = pCommandTarget->Exec(&GUID_TriEditCommandGroup, ucmdID, OLECMDEXECOPT_DODEFAULT, pVarIn, NULL); } } return hr; }
//------------------------------------------------------------------------------- // Name: GetCommandStatus // Desc: Запросить состояние команды по ее ID // За дополнительной информацией смотрие MSDN DhtmlEdit. //------------------------------------------------------------------------------- DWORD COfsDhtmlEditCtrl::GetCommandStatus( ULONG ucmdID ) { DWORD dwReturn = 0; if ( m_pSite != NULL ) { LPOLECOMMANDTARGET pCommandTarget = m_pSite->GetCommandTarget(); if ( pCommandTarget != NULL ) { HRESULT hr = S_OK; MSOCMD msocmd; msocmd.cmdID = ucmdID; msocmd.cmdf = 0; hr = pCommandTarget->QueryStatus(&GUID_TriEditCommandGroup, 1, &msocmd, NULL); dwReturn = msocmd.cmdf; } } return dwReturn; }
void CHtmlView::OnFilePrint() { // get the HTMLDocument if (m_pBrowserApp != NULL) { LPOLECOMMANDTARGET lpTarget = NULL; LPDISPATCH lpDisp = GetHtmlDocument(); if (lpDisp != NULL) { // the control will handle all printing UI if (SUCCEEDED(lpDisp->QueryInterface(IID_IOleCommandTarget, (LPVOID*) &lpTarget))) { lpTarget->Exec(NULL, OLECMDID_PRINT, 0, NULL, NULL); lpTarget->Release(); } lpDisp->Release(); } } }