2 kkmirsoft kkmirsoft 于 2015.07.21 01:26 提问

MFC cwebbrowser2 navigate只载入循环后的最后一个页面

用mfc提取了指定页面的html代码,然后用boost::regex正则表达式循环提取了几个

标签里的内容
我想把提取出来的内容跟一些字符组装起来,再navigate一下,提交出去。但是每次只navigate循环之后的最后一个网址。

求大神,弄了两天了,加了gettickcount还是不行

4个回答

caozhy
caozhy   Ds   Rxr 2015.07.21 06:13

没有代码没有真相,你是怎么保存的url,数组是不是引用了同一个地址的字符串

kkmirsoft
kkmirsoft 代码稍后上传
2 年多之前 回复
kkmirsoft
kkmirsoft   2015.07.21 09:15

每次提交的确实是同样的cstring字符。我没有放到数组里。也就是您说的引用了同一个地址的字符串
请问这个有影响吗?

kkmirsoft
kkmirsoft   2015.07.21 09:49

代码如下,声明str_text是获取到的html文本,reg是正则表达式,tregex_iterator 获取了两列的cstring字符,sRet是第一列,sret2第二列

boost::tregex_iterator i(boost::make_regex_iterator(str_text, reg)), j;
CString sRet, sret2;
while (i != j){
sRet = CString((*i)[1].first, (*i)[1].length());
sret2 = CString((*i)[2].first, (*i)[2].length());
CString urlPost;
CString urlKey;
GetDlgItem(IDC_EDIT3)->GetWindowTextW(urlPost);
GetDlgItem(IDC_EDIT4)->GetWindowTextW(urlKey);

    CString urlSend = urlPost + _T("?key=") + urlKey + _T("&refer1=") + sRet + _T("&refer2=") + sret2;
    testBrowser.Navigate(urlSend, NULL, NULL, NULL, NULL); 
    }

    每次只navigate循环之后的最后一个网址,即最后一个组装后的urlSend。但是我用edit control可以获取到前面几组 sRet sret

    求解答
oyljerry
oyljerry   Ds   Rxr 2015.07.21 10:27

你Navigate之后,页面就刷新了。后面一次又Naviaget覆盖了前面的,应该这样你就只能看到最后一次的了页面了。

oyljerry
oyljerry 回复kkmirsoft: OnDocumentComplete是属于Webbrowser控件的
2 年多之前 回复
kkmirsoft
kkmirsoft 回复oyljerry: 上面的代码是在定时器里做的,能加入OnDocumentComplete事件吗
2 年多之前 回复
oyljerry
oyljerry 回复kkmirsoft: 处理控件的OnDocumentComplete等事件
2 年多之前 回复
kkmirsoft
kkmirsoft 那我怎么才能暂停,让navigate执行完毕呢?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片