解决方案 »
- 调用的c语言库和MFC库冲突怎么办
- 在CMainFrame类里如何调用View类的方法???
- 如何把CHAR[]数组转成CONST WCHAR* ???请教啊!!!
- 请教各位如何让treectrl支持多选??多谢
- 如下数组如何实现,算法问题
- 用c语言实现旅行商问题的c-w节约算法
- 请问在ASP里连接数据源和操作数据库的方法用C语言编译器是不是可以编译??
- 如何实现图片的选择
- compile 时没有错,而build时总有一个错误!请教高手
- 一个内存泄露问题:请各位内存高手进来看一看,小弟分不多,请帮帮忙,谢谢!
- Navigate2函数提问
- new|Create一个对话框后,DestroyWindow|delete的问题?
如果是ie 浏览器的话, 可用不用 OnBeforeNavigate2,使用 Asynchronous Pluggable Protocol
Asynchronous Pluggable Protocol可以指定对所有进程有效,这个在注册表的HKEY_CLASSES_ROOT\PROTOCOLS\Handler下注册一下就好;也可 以指定只在某个进程内有效,以增加保密性,不过这个时候微软就不叫它Asynchronous Pluggable Protocol了,而是Pluggable Namespace Handler。
使用这种插件 lz就可以实现 自定义协议了 mypro://index.html
Asynchronous Pluggable Protocol 在 google, msdn 上一搜一大把,原理代码都有 lz自己搜一下吧.
这个可用解决iframe 的问题
http://www.codeguru.com/cpp/com-tech/atl/misc/article.php/c37/Asynchronous-Pluggable-Protocol-Implementation-with-ATL.htm
http://www.codeproject.com/kb/aspnet/APPHyperlinks.aspx
http://msdn.microsoft.com/en-us/library/aa767743%28VS.85%29.aspx
看看这个
这个协议就是一个com插件,具体的代码实现我没写过,你问ls的吧,他写过代码的
如果你不急的话,明天我看看帮你写一个简单的demo吧
你加我qq(78690371)吧,我给你传一个工程压缩包,多谢了,csdn人气挺好,但功太一般了,回复过的帖子不能修改,回复贴中不能加附件
CHtmlView::OnBeforeNavigate2(strLoalFileUrl.c_str(), nFlags, lpszTargetFrameName, baPostedData, lpszHeaders, pbCancel);
不行的,我把测试工程打包传上rapidshare.com上的,大家可以下载下来随便试,可惜csdn没法上传附件呀
http://rs756tl4.rapidshare.com/files/381478769/1317724/MyBrowser.rar
我msn:[email protected] hi:mooncome, 方便的话加我下,谢谢
http://d.download.csdn.net/down/2300518/visualassist4680
上传之后,要等那么长时间才能看到下载链接吗?
不要直接Navigate,直接Navigate始终是对顶层webbrowser的操作。
用下面的方式:BeforeNavigate2(
IDispatch *pDisp, // 这个参数代表的是webbrowser或者当有内嵌frame时代表frame本身CComQIPtr<IWebBrowser2> spWB = pDisp;
spWB->Navigate2(...)
在程序里 直接打开 child.html 也是没有问题的
http://d.download.csdn.net/down/2300518/visualassist4680
你的代码我看了,注册,处理的代码都被删了
你用我昨天传给你的
csdn不能上传截图,不好用
运行程序 打开文件, 选择 parent.html 然后点确定,窗口可以正常显示 this is child page, 文档的标题显示 parent.html
csdn编辑功能太弱了,不能传附件,不能贴图
你根本就没有改哈...请看仔细, 我写的那个 带 pDisp的,是 DWebBrowserEvents2::BeforeNavigate2
不是CHtmlView::OnBeforeNavigate2 ( 这个函数里面不带 pDisp )你需要自己加一个EVENTSINK_MAP处理 DWebBrowserEvents2::BeforeNavigate2
如果不知道怎么做,翻mfc库中 CHtmlView::OnBeforeNavigate2 ,照着做就可以了
http://topic.csdn.net/u/20100504/12/24e377fb-3f0d-4279-bc3e-1ba4033580d1.html?seed=1028692928&r=65161844#r_65161844
2:OnBeforeNavigate的lpszURL参数被MS设计成LPCTSTR而不是LPTSTR,那就是说MS不想让你在OnBeforeNavigate里改变lpszURL,所以我前面那个建议也不行。甚至我在lz的代码里做了个实验,把lpszURL的内容使用strcpy((char*)lpszURL, newurl)拷贝成新的url也不行。这说明lpszURL不但是用CONST STR 传递, 而且该参数是按值传递进来的,OnBeforeNavigate被调用后MS的代码做下一步读内容时根本不是使用lpszURL指向的内容。
3:建议lz变通一下,你可以使用http://localhost的方式直接浏览本地文件而不需要连接网络,这样就不用改lpszURL了,改lpszURL指向的内容就行了。