duilib CWebBrowserUI重写?

小咖啡0120 2014-02-15 02:45:28
触发js函数后,GetIDsOfNames函数没有任何反映,求教

#pragma once
#include "stdafx.h"

class WebBrowserOwn :
public CWebBrowserUI
{
public:
WebBrowserOwn(void);
~WebBrowserOwn(void);
virtual STDMETHODIMP GetExternal( IDispatch** ppDispatch );

virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames( __RPC__in REFIID riid, __RPC__in_ecount_full(cNames ) LPOLESTR *rgszNames, UINT cNames, LCID lcid, __RPC__out_ecount_full(cNames) DISPID *rgDispId );

virtual STDMETHODIMP Invoke( DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr );

void MyMethod();

};

#include "WebBrowserOwn.h"


WebBrowserOwn::WebBrowserOwn(void)
{
}


WebBrowserOwn::~WebBrowserOwn(void)
{
}

STDMETHODIMP WebBrowserOwn::GetExternal( IDispatch** ppDispatch )
{
*ppDispatch = this;
return S_OK;
}

HRESULT STDMETHODCALLTYPE WebBrowserOwn::GetIDsOfNames( __RPC__in REFIID riid, __RPC__in_ecount_full(cNames ) LPOLESTR *rgszNames, UINT cNames, LCID lcid, __RPC__out_ecount_full(cNames) DISPID *rgDispId )
{
//DISP ID 从200开始
if(_tcscmp(rgszNames[0],_T("MyMethod")) == 0){
*rgDispId = 200;
return S_OK;
}
return __super::GetIDsOfNames(riid,rgszNames,cNames,lcid,rgDispId);
}

STDMETHODIMP WebBrowserOwn::Invoke( DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr )
{
if ((riid != IID_NULL))
return E_INVALIDARG;

switch(dispIdMember)
{
case 200:
MyMethod();
break;
}

return __super::Invoke(dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}

void WebBrowserOwn::MyMethod()
{

}





调用函数:

WebBrowserOwn * pWebBrowserUI = static_cast<WebBrowserOwn *>(m_pm.FindControl(_T("ie_doc")));

if( pWebBrowserUI != NULL ) {
pWebBrowserUI ->Navigate2(_T("http://localhost:21625/index.aspx"));
}





<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="AutoSend.index" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function setaa() {
// alert("11111");
window.external.MyMethod();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" onclick="setaa()" value="button" />
</div>
</form>
</body>
</html>


...全文
127 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
TOMSER123 2015-12-05
  • 打赏
  • 举报
回复
亲 怎么解决的?
encoderlee 2014-02-15
  • 打赏
  • 举报
回复
问题已经解决了?
小咖啡0120 2014-02-15
  • 打赏
  • 举报
回复
来个小伙伴,散分~~~

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧