java script 调用c_javascript 调用C++函数

#include "StdAfx.h"#include"Custsite.h"#include"test.h" //主要用到 theApp (261行)

BEGIN_INTERFACE_MAP(CCustomControlSite, COleControlSite)

INTERFACE_PART(CCustomControlSite, IID_IDocHostShowUI, DocHostShowUI)

INTERFACE_PART(CCustomControlSite, IID_IDocHostUIHandler, DocHostUIHandler)

END_INTERFACE_MAP()

ULONG CCustomControlSite::XDocHostShowUI::AddRef()

{

METHOD_PROLOGUE(CCustomControlSite, DocHostShowUI);return pThis->ExternalAddRef();

}

ULONG CCustomControlSite::XDocHostShowUI::Release()

{

METHOD_PROLOGUE(CCustomControlSite, DocHostShowUI);return pThis->ExternalRelease();

}

HRESULT CCustomControlSite::XDocHostShowUI::QueryInterface(REFIID riid,void **ppvObj)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostShowUI);return pThis->ExternalQueryInterface( &riid, ppvObj );

}

HRESULT CCustomControlSite::XDocHostShowUI::ShowHelp(HWND hwnd,

LPOLESTR pszHelpFile,

UINT nCommand,

DWORD dwData,

POINT ptMouse,

IDispatch*pDispatchObjectHit)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostShowUI);returnS_OK;

}

HRESULT CCustomControlSite::XDocHostShowUI::ShowMessage(HWND hwnd,

LPOLESTR lpstrText,

LPOLESTR lpstrCaption,

DWORD dwType,

LPOLESTR lpstrHelpFile,

DWORD dwHelpContext,

LRESULT*plResult)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostShowUI);

MessageBox(hwnd, (CString)lpstrText, _T("Cpp & JavaScript"), /*dwType*/MB_ICONWARNING);returnS_OK;

}

ULONG FAR EXPORT CCustomControlSite::XDocHostUIHandler::AddRef()

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)return pThis->ExternalAddRef();

}

ULONG FAR EXPORT CCustomControlSite::XDocHostUIHandler::Release()

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)return pThis->ExternalRelease();

}

HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::QueryInterface(REFIID riid,void **ppvObj)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)

HRESULT hr= (HRESULT)pThis->ExternalQueryInterface(&riid, ppvObj);returnhr;

}//* CImpIDocHostUIHandler::GetHostInfo//*//* Purpose: Called at initialization//*

HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::GetHostInfo( DOCHOSTUIINFO*pInfo )

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)

pInfo->dwFlags =DOCHOSTUIFLAG_NO3DBORDER;

pInfo->dwDoubleClick =DOCHOSTUIDBLCLK_DEFAULT;returnS_OK;

}//* CImpIDocHostUIHandler::ShowUI//*//* Purpose: Called when MSHTML.DLL shows its UI//*

HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::ShowUI(

DWORD dwID,

IOleInPlaceActiveObject* /*pActiveObject*/,

IOleCommandTarget*pCommandTarget,

IOleInPlaceFrame* /*pFrame*/,

IOleInPlaceUIWindow* /*pDoc*/)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)//We've already got our own UI in place so just return S_OK

returnS_OK;

}//* CImpIDocHostUIHandler::HideUI//*//* Purpose: Called when MSHTML.DLL hides its UI//*

HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::HideUI(void)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)returnS_OK;

}//* CImpIDocHostUIHandler::UpdateUI//*//* Purpose: Called when MSHTML.DLL updates its UI//*

HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::UpdateUI(void)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)//MFC is pretty good about updating it's UI in it's Idle loop so I don't do anything here

returnS_OK;

}//* CImpIDocHostUIHandler::EnableModeless//*//* Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::EnableModeless//*

HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::EnableModeless(BOOL /*fEnable*/)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)returnE_NOTIMPL;

}//* CImpIDocHostUIHandler::OnDocWindowActivate//*//* Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::OnDocWindowActivate//*

HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::OnDocWindowActivate(BOOL /*fActivate*/)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)returnE_NOTIMPL;

}//* CImpIDocHostUIHandler::OnFrameWindowActivate//*//* Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::OnFrameWindowActivate//*

HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::OnFrameWindowActivate(BOOL /*fActivate*/)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)returnE_NOTIMPL;

}//* CImpIDocHostUIHandler::ResizeBorder//*//* Purpose: Called from MSHTML.DLL's IOleInPlaceActiveObject::ResizeBorder//*

HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::ResizeBorder(

LPCRECT/*prcBorder*/,

IOleInPlaceUIWindow* /*pUIWindow*/,

BOOL/*fRameWindow*/)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)returnE_NOTIMPL;

}//* CImpIDocHostUIHandler::ShowContextMenu//*//* Purpose: Called when MSHTML.DLL would normally display its context menu//*

HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::ShowContextMenu(

DWORD/*dwID*/,

POINT*pptPosition,

IUnknown* /*pCommandTarget*/,

IDispatch* /*pDispatchObjectHit*/)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)returnE_NOTIMPL;//CMenu menu;//menu.LoadMenu(IDR_CUSTOM_POPUP);//CMenu* pSubMenu = menu.GetSubMenu(0);

Because we passed in theApp.m_pMainWnd all of ourWM_COMMAND handlers for the menu items must be handledin CCustomBrowserApp. If you want this to be your dialogyou will have to grab a pointer to your dialog class andpass the hWnd of it into the last parameter in this call

//pSubMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, pptPosition->x, pptPosition->y, theApp.m_pMainWnd);

return S_OK; //We've shown our own context menu. MSHTML.DLL will no longer try to show its own.

}//* CImpIDocHostUIHandler::TranslateAccelerator//*//* Purpose: Called from MSHTML.DLL's TranslateAccelerator routines//*

HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::TranslateAccelerator(LPMSG lpMsg,/*[in]*/ const GUID __RPC_FAR *pguidCmdGroup,/*[in]*/DWORD nCmdID)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)//disable F5

if(lpMsg->message == WM_KEYDOWN && GetAsyncKeyState(VK_F5) < 0)returnS_OK;if(GetKeyState(VK_CONTROL) & 0x8000)

{//disable ctrl + O

if(lpMsg->message == WM_KEYDOWN && GetAsyncKeyState(0x4F) < 0)returnS_OK;//disable ctrl + p

if(lpMsg->message == WM_KEYDOWN && GetAsyncKeyState(0x50) < 0)returnS_OK;//disable ctrl + N

if(lpMsg->message == WM_KEYDOWN && GetAsyncKeyState(0x4E) < 0)returnS_OK;

}//disable back space

if(lpMsg->wParam ==VK_BACK)returnS_OK;returnS_FALSE;

}//* CImpIDocHostUIHandler::GetOptionKeyPath//*//* Purpose: Called by MSHTML.DLL to find where the host wishes to store//* its options in the registry//*

HRESULT FAR EXPORT CCustomControlSite::XDocHostUIHandler::GetOptionKeyPath(BSTR*pbstrKey, DWORD)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)returnE_NOTIMPL;

}

STDMETHODIMP CCustomControlSite::XDocHostUIHandler::GetDropTarget(/*[in]*/ IDropTarget __RPC_FAR *pDropTarget,/*[out]*/ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)returnE_NOTIMPL;

}

STDMETHODIMP CCustomControlSite::XDocHostUIHandler::GetExternal(/*[out]*/ IDispatch __RPC_FAR *__RPC_FAR *ppDispatch)

{//return the IDispatch we have for extending the object Model

IDispatch* pDisp = (IDispatch*)theApp.m_pDispOM; //这里

pDisp->AddRef();*ppDispatch =pDisp;returnS_OK;

}

STDMETHODIMP CCustomControlSite::XDocHostUIHandler::TranslateUrl(/*[in]*/DWORD dwTranslate,/*[in]*/ OLECHAR __RPC_FAR *pchURLIn,/*[out]*/ OLECHAR __RPC_FAR *__RPC_FAR *ppchURLOut)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)returnE_NOTIMPL;

}

STDMETHODIMP CCustomControlSite::XDocHostUIHandler::FilterDataObject(/*[in]*/ IDataObject __RPC_FAR *pDO,/*[out]*/ IDataObject __RPC_FAR *__RPC_FAR *ppDORet)

{

METHOD_PROLOGUE(CCustomControlSite, DocHostUIHandler)returnE_NOTIMPL;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值