MFC中CHtmlView和JS的相互调用
来源:互联网 发布:零基础学java第3版pdf 编辑:程序博客网 时间:2024/05/17 04:52
没废话,直接上步骤:
1、创建一个继承自CHtmlView的类;
2、构造函数中添加
CNewHtmlView::CNewHtmlView(){// 允许自动化EnableAutomation();}
3、重载 virtual HRESULT OnGetExternal( LPDISPATCH *lppDispatch);
HRESULT CNewHtmlView::OnGetExternal( LPDISPATCH *lppDispatch ){// 返回自身的IDispatch接口*lppDispatch = GetIDispatch(TRUE);return S_OK;}
// JS调用C++部分
4、头文件中添加宏
DECLARE_DISPATCH_MAP
类似DECLARE_MESSAGE_MAP,具体自己Google
5、.cpp中添加接口映射
// 添加供JS调用的函数BEGIN_DISPATCH_MAP(CNewHtmlView, CHtmlView)DISP_FUNCTION(CNewHtmlView, "CB_FunctionInsallApp", CB_FunctionInsallApp, VT_EMPTY, VTS_DISPATCH)DISP_FUNCTION(CNewHtmlView, "CB_FunctionTryPlay", CB_FunctionTryPlay, VT_EMPTY, VTS_DISPATCH)END_DISPATCH_MAP()// 实现void CNewHtmlView::CB_FunctionInsallApp(IDispatch *pDispVal){CComDispatchDriver spData = pDispVal;CComVariant varProperty;spData.GetPropertyByName(L"PropertyName",&varProperty)}
说明:DISP_FUNCTION(CNewHtmlView, "JS中调用的函数名", C++中对应的函数名称, 返回值, 参数[多个参数以空格隔开,VTS_DISPATCH一般作为结构体参数])
获取结构体内容
6、调用js函数
HRESULT CNewHtmlView::OnInvokeJS( WPARAM wParam, LPARAM lParam ){// 组织参数CArray<CComVariant, CComVariant &> _param;_param.Add( CComVariant("123" ));_param.Add( CComVariant( "456"));CComQIPtr<IHTMLDocument2> _document;m_pBrowserApp->get_Document( (IDispatch **)&_document );CComDispatchDriver _script;_document->get_Script(&_script);_script.InvokeN("js中函数名称", &_param[0], param.GetCount());return S_OK;}
搞定,收工~!
0 0
- MFC中CHtmlView和JS的相互调用
- Android和js的相互调用
- flex 和js 函数的相互调用
- JS和FLEX的相互调用
- Android webview和js的相互调用
- CHtmlView或IE控件调用js的方法
- MFC中CHtmlEditCtrl类与CHtmlView类的使用
- js和c#相互调用
- js和c#相互调用
- Flex和js相互调用
- Flex和js相互调用
- android和js相互调用
- JS和Android相互调用
- Android 和 js 相互调用
- JS和OC相互调用
- JS和javaScript相互调用
- android和js相互调用
- IOS WebView中JS和OC相互调用
- Python-面向对象(三 元编程)
- 用于字符串拼接,字符串重合度以及偏移量算法
- 让CSS的查找匹配原理变高效
- Alpha版本
- TCP/IP协议全部IP协议号
- MFC中CHtmlView和JS的相互调用
- subsys_initcall
- winform拦截关闭按钮触发的事件
- LeetCode 3Sum Closest
- 完整的asp.net 导出table到Excel中
- 白屏调试分析
- jquery实现表格内容的上下移动
- PHP基础加强(第十三天)
- 在无clipboard 的vim 中, 如何使用系统剪切板