首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么为webbrowser中弹出的模态网页对话框添加自动化方法

2012-03-07 
如何为webbrowser中弹出的模态网页对话框添加自动化方法?我用CDHtmlDialog做基类,做了一个简单浏览器,通过

如何为webbrowser中弹出的模态网页对话框添加自动化方法?
我用CDHtmlDialog做基类,做了一个简单浏览器,通过以下几步,添加了自动化方法MyFunc

C/C++ code
///////////////////////////////////////////1、类声明文件中添加DECLARE_DISPATCH_MAP()添加响应函数声明,如void MyFunc(char* sURL);重载CanAccessExternalvirtual BOOL CanAccessExternal();2、构造函数添加EnableAutomation();初始化添加SetExternalDispatch(GetIDispatch(TRUE));消息映射添加BEGIN_DISPATCH_MAP(CDlgIE, CDHtmlDialog)    //弹出窗口接口    DISP_FUNCTION(CDlgIETooltip, "MyFunc", MyFunc, VT_EMPTY, VTS_BSTR)         // example:    // DISP_FUNCTION(CMyDHTMLDialog,"Func2",TestFunc,VT_BOOL,VTS_BSTR VTS_I4 VTS_I4)    //                                                ^return,   ^parameters type listEND_DISPATCH_MAP()实现CanAccessExternal重载BOOL CDlgIE::CanAccessExternal(){    return TRUE;}最后实现响应函数MyFunc////////////////////////////////////////////////////////////////////


这样,在网页中就可以使用external.MyFunc("参数")来调用我的浏览器提供的方法
现在问题是,如果网页中用showModalDialog弹出一个网页对话框,在网页对话框中就无法调用external.MyFunc方法
一种解决方案是将window在showModalDialog时传入,然后在对话框中调父页面的方法,但是我的页面有时是跨域的,无法取到父页面的window。
所以现在想最好能把网页对话框的webbrowser控件也加入我自定义的交互函数,想了很久,也找了很久,没有找到解决方案,想请各位帮帮忙,谢谢。
现在可以用hook得到网页对话框的窗口消息,但不知该如何给webbrowser加网页的消息映射

[解决办法]
Hook,把网页弹出的对话框也用你的对话框来显示,这样可以绑定》

热点排行