LRESULT CWebBrowserUI::TranslateAccelerator( MSG *pMsg ) { if(pMsg->message < WM_KEYFIRST || pMsg->message > WM_KEYLAST) return S_FALSE; if( m_pWebBrowser2 == NULL ) return E_NOTIMPL; // 当前Web窗口不是焦点,不处理加速键 BOOL bIsChild = FALSE; HWND hTempWnd = NULL; HWND hWndFocus = ::GetFocus(); hTempWnd = hWndFocus; while(hTempWnd != NULL) { if(hTempWnd == m_hwndHost) { bIsChild = TRUE; break; } hTempWnd = ::GetParent(hTempWnd); } if(!bIsChild) return S_FALSE; IOleInPlaceActiveObject *pObj; if (FAILED(m_pWebBrowser2->QueryInterface(IID_IOleInPlaceActiveObject, (LPVOID *)&pObj))) return S_FALSE; HRESULT hResult = pObj->TranslateAccelerator(pMsg); pObj->Release(); return hResult; }
STDMETHOD(SetActiveObject)(IOleInPlaceActiveObject* pActiveObject, LPCOLESTR /*pszObjName*/) { if( pActiveObject != NULL ) pActiveObject->AddRef(); if( m_pActiveObject != NULL ) m_pActiveObject->Release(); m_pActiveObject = pActiveObject; return S_OK; }
void IEView::translateAccelerator(UINT uMsg, WPARAM wParam, LPARAM lParam) { IOleInPlaceActiveObject* pIOIPAO; if (SUCCEEDED(pWebBrowser->QueryInterface(IID_IOleInPlaceActiveObject, (void**)&pIOIPAO))) { MSG msg; msg.message = uMsg; msg.wParam = wParam; msg.lParam = lParam; pIOIPAO->TranslateAccelerator(&msg); pIOIPAO->Release(); } }
HRESULT AxContainer::OnTranslateAccelerator( MSG &msg ) { if (m_pOleObject == NULL) return S_FALSE; IOleInPlaceActiveObject *pObj; if (FAILED(m_pOleObject->QueryInterface(IID_IOleInPlaceActiveObject, (LPVOID *)&pObj))) return S_FALSE; HRESULT hResult = pObj->TranslateAccelerator(&msg); pObj->Release(); return hResult; }
// @pymethod |PyIDocHostUIHandler|ShowUI|Description of ShowUI. PyObject *PyIDocHostUIHandler::ShowUI(PyObject *self, PyObject *args) { IDocHostUIHandler *pIDHUIH = GetI(self); if ( pIDHUIH == NULL ) return NULL; // @pyparm int|dwID||Description for dwID // @pyparm <o PyIOleInPlaceActiveObject>|pActiveObject||Description for pActiveObject // @pyparm <o PyIOleCommandTarget>|pCommandTarget||Description for pCommandTarget // @pyparm <o PyIOleInPlaceFrame>|pFrame||Description for pFrame // @pyparm <o PyIOleInPlaceUIWindow>|pDoc||Description for pDoc PyObject *obpActiveObject; PyObject *obpCommandTarget; PyObject *obpFrame; PyObject *obpDoc; DWORD dwID; if ( !PyArg_ParseTuple(args, "lOOOO:ShowUI", &dwID, &obpActiveObject, &obpCommandTarget, &obpFrame, &obpDoc) ) return NULL; IOleInPlaceActiveObject * pActiveObject; IOleCommandTarget * pCommandTarget; IOleInPlaceFrame * pFrame; IOleInPlaceUIWindow * pDoc; BOOL bPythonIsHappy = TRUE; if (bPythonIsHappy && !PyCom_InterfaceFromPyInstanceOrObject(obpActiveObject, IID_IOleInPlaceActiveObject, (void **)&pActiveObject, TRUE /* bNoneOK */)) bPythonIsHappy = FALSE; if (bPythonIsHappy && !PyCom_InterfaceFromPyInstanceOrObject(obpCommandTarget, IID_IOleCommandTarget, (void **)&pCommandTarget, TRUE /* bNoneOK */)) bPythonIsHappy = FALSE; if (bPythonIsHappy && !PyCom_InterfaceFromPyInstanceOrObject(obpFrame, IID_IOleInPlaceFrame, (void **)&pFrame, TRUE /* bNoneOK */)) bPythonIsHappy = FALSE; if (bPythonIsHappy && !PyCom_InterfaceFromPyInstanceOrObject(obpDoc, IID_IOleInPlaceUIWindow, (void **)&pDoc, TRUE /* bNoneOK */)) bPythonIsHappy = FALSE; if (!bPythonIsHappy) return NULL; HRESULT hr; PY_INTERFACE_PRECALL; hr = pIDHUIH->ShowUI( dwID, pActiveObject, pCommandTarget, pFrame, pDoc ); if (pActiveObject) pActiveObject->Release(); if (pCommandTarget) pCommandTarget->Release(); if (pFrame) pFrame->Release(); if (pDoc) pDoc->Release(); PY_INTERFACE_POSTCALL; if ( FAILED(hr) ) return PyCom_BuildPyException(hr, pIDHUIH, IID_IDocHostUIHandler ); return PyInt_FromLong(hr); }