一个关于VC获取指针的问题

dl315 2014-04-24 11:43:04
我写了这样一段代码:

void CMyWebDlg::OnBnClickedQuerydata()
{
// TODO: 在此添加控件通知处理程序代码
CComVariant vtEmpty;
m_web.put_Silent(TRUE);
m_web.Navigate2(&CComVariant("http://abc.com"), &vtEmpty,&vtEmpty, &vtEmpty, &vtEmpty);//打开指定的网页

CComPtr < IDispatch >spDispDoc;
spDispDoc =m_web.get_Document();

UpdateData();
CComQIPtr< IHTMLDocument2 >spDocument2 = spDispDoc;
AfxMessageBox("111"); // 注释1

CComQIPtr<IHTMLElementCollection > spElementCollection;

HRESULT hr;
hr =spDocument2->get_all(&spElementCollection);
// 注释2
if(SUCCEEDED(hr))
{
// 注释3
CComPtr<IDispatch>spDisp;
CComPtr<IDispatch>spDisp1;
HRESULT hr1,hr2;
hr1 =spElementCollection->item(CComVariant("DeptName"),CComVariant("0"),&spDisp);
hr2 =spElementCollection->item(CComVariant("OfficeName"),CComVariant("0"), &spDisp1);
if(SUCCEEDED(hr1))
{
UpdateData();
if(NULL== spDisp)
{
AfxMessageBox("NULL!");
}
else
{
AfxMessageBox("Not NULL!");
}

CComQIPtr<IHTMLInputElement > pElement = spDisp;
pElement->put_value(CComBSTR("222"));

CComQIPtr<IHTMLInputElement > pElement1 = spDisp1;
pElement1->put_value(CComBSTR("333"));

}
}
}

现在的问题是,我在注释1处加了AfxMessageBox,在注释4处就能获取非空指针spDisp,而如果在注释1处不加AfxMessageBox,或者把AfxMessageBox移动到注释2处或者之后,在注释4处获取的spDisp就是空指针,请问这是为什么?求解释!
另外如果我不想在注释1处加AfxMessageBox,又想让注释4处获取的指针非空,该如何修改?
...全文
87 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dl315 2014-04-25
  • 打赏
  • 举报
回复
引用 3 楼 PDD123 的回复:
AfxMessageBox("111"); 似乎起到了一个延时的作用。 或许需要加上延时,或许需要等待某个事件发生? 楼主最好再看看相关的资料。
我试过加sleep和for循环两种延时,都没有作用,不知道延时方式选择的问题,还是根本就不是延时的问题
PDD123 2014-04-25
  • 打赏
  • 举报
回复
AfxMessageBox("111"); 似乎起到了一个延时的作用。 或许需要加上延时,或许需要等待某个事件发生? 楼主最好再看看相关的资料。
赵4老师 2014-04-25
  • 打赏
  • 举报
回复
请楼主移驾VC/MFC论坛。
dl315 2014-04-24
  • 打赏
  • 举报
回复
if(NULL== spDisp) { AfxMessageBox("NULL!"); } else { AfxMessageBox("Not NULL!"); // 注释4 } 之前忘了写了,注释4在上面标示的位置,就是想获取spDisp这个指针获取不到

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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