请教下高手,程序崩溃的原因

lanluosi2010 2011-02-16 07:29:01
[size=11px]想学习一下网页控制方面的内容,百度了很多帖子,作为新手,想做一个最简单的例子试试
于是从http://q.yesky.com/group/review-18788733.html这篇文章上介绍的来做
首先,生成一个基本的MFC对话框程序
其次,在工程中添加webbrowser和DHTML Edit Control Safe for Scripting for IE5,工程自动增加了很多类
接着,在对话框上加了一个按钮,一个webbrowser控件,设置百度为默认页面
然后StdAfx.h中添加#include "htmldocument2.h",
void CMyDlg::OnButton2()
{
CHTMLDocument2 htmlDoc;
LPDISPATCH pIDisp=m_ie.GetDocument(); //取得一级的CHtmlDocument2对象
ASSERT(pIDisp);
htmlDoc=pIDisp;
CString temp;
temp=htmlDoc.GetUrl();
}size]

按照文中思路,先获得webbrowser控件的文档对象,然后获取当前的URL,编译没错,但是运行到temp=htmlDoc.GetUrl()的时候会出错,提示为access violation,百度的结果是说,数组越界,或者指针为空,但是调试的时候查看htmlDoc的值,并不是空的啊,请高手看看,给个提示,到底是什么地方出错了,我用的是VC6.0
...全文
172 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanluosi2010 2011-02-18
  • 打赏
  • 举报
回复
回5楼:
我没还来得及测试一下,不过感觉您说的很有道理,因为网上很多的文章和代码,都是用接口来操作的,用包装类的代码少的可怜,也不完整。我会好好系统的学习一下这个方面的知识,只有理论掌握了,具体代码才能写好

好了,结贴,5楼最佳,另外多谢其他朋友的帮助,希望大家一起努力,好好学习哈
skyxie 2011-02-17
  • 打赏
  • 举报
回复
htmlDoc的值我查看过,确实和pIDisp是相同的
-----------
这应该有问题!

操作webbrowser控件最好不用包装类,用原始接口。

你改成
CComQIPtr<IHTMLDocument2> spDoc2 = pIDisp;
_bstr_t bstrURL;
spDoc2->get_URL(&bstrURL);
CString strURL = (LPCTSTR)bstrURL;
lanluosi2010 2011-02-17
  • 打赏
  • 举报
回复
回1楼:
网页可以正确显示的,
那句代码,是挺奇怪,我是从上面的参考文章看来的,但是编译没并有报错,调试跟踪的时候,里面的数据也是相同的
回2楼:
m.ie肯定是对的,因为浏览网页不是问题,htmlDoc的值我查看过,确实和pIDisp是相同的,至于为什么这样赋值可以,我就不清楚了,因为这方面的理论没有系统了解过,也只是照葫芦画瓢
回3楼:
问题没有出在浏览器上,你说的这个步骤,我之前在其他程序用到过,没有出过什么问题

网上百度了不少帖子,都是讲的接口,讲的IE实例,都挺复杂,我用自带的浏览器做测试,代码应该不会太复杂,就是不知道什么地方出错了
htmlDoc=pIDisp这句代码,我曾经改成htmlDoc=(CHTMLDocument2)pIDisp,结果还是一样的,我会继续学习并找答案,同时也希望有高手指点一下,让我少走点弯路
jason106 2011-02-16
  • 打赏
  • 举报
回复
非常简单
例子如下:
1.新建一个基于对话框的工程,命名为test,然后在对话框上单击右键,选择
Insert ActiveX Control…在弹出的对话框中选择MicroSoft Web浏览器,点击OK。
此时对话框上已经出现了WebBrowser控件,调整它的大小以适合对话框的大小。

2.选择WebBrowser控件,点击View/ClassWizard,选择Member Variables,单击
Add Variable按钮,此时会弹出两个对话框,均点击确定即可。然后给该控件加
入一个变量,我们把它命名为m_ctrlWeb。
3.在ClassWizard中选择OnInitDialog()函数,在里面加入如下代码:
m_ctrlWeb.Navigate("www.csdn.net",NULL,NULL,NULL,NULL);

oyljerry 2011-02-16
  • 打赏
  • 举报
回复
m_ie等是否控件..htmlDoc是否获取到document
  • 打赏
  • 举报
回复
你先这样测测看:先不添加button中的处理,看百度默认页面是否可以正确显示,这个如果都不对,其他肯定有问题了,如果这个正确的话,再继续定位。

下面这样写,我觉得很奇怪,至少我从来没这样用过
“htmlDoc=pIDisp; ”

3,055

社区成员

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

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