永发信息网

MFC下WaitForSingleObject用法

答案:2  悬赏:10  手机版
解决时间 2021-02-13 03:26
初学MFC,还不是很了解。
我现在由一个m_webBrowser用来加载URL,如下
if (m_Url.GetLength() == 0)
return;
m_webBrowser.Navigate(m_Url, NULL, NULL, NULL, NULL);
另外有个函数会读取到加载到的网页的HTML文件,代码如下
MSHTML::IHTMLDocument2Ptr pHTMLDoc = m_webBrowser.GetDocument();

问题在与由于加载网页时间太长,读到的HTML代码总是不全,所以想用WaitForSingleObject方法来等待m_webBrowser加载完毕在读取HTML。但WaitForSingleObject的第一个参数句柄应该怎么写,我现在只知道m_webBrowser.GetReadyState() != READYSTATE_COMPLETE这个判断可以知道页面是否加载完全,怎么把这个变成句柄。
我在代码里面也定义不了CEvent类,不知道怎么办

用sleep好象不行,是不是因为
m_webBrowser在这个期间也不会加载URL的
还是读不到HTML文件

我试了sleep 10秒钟了,读出来的HTML还是为空。10秒肯定可以加载了的。
最佳答案
有必要把问题搞那么复杂吗?
用个while(1)循环不就解决了?
int i=0;
while(1)
{
if(m_webBrowser.GetReadyState() != READYSTATE_COMPLETE)
{
Sleep(1000);//等待1秒
i++;
}
else
break;
if(i>=10)//time out
break;
}
你非要用这个函数的话,下面的代码供你参考,具体怎样实现你的思路恐怕不是这一两句代码能实现的。可能要涉及多线程。
HANDLE hMutex = CreateMutex(NULL,TRUE,NULL);//创建并拥有互斥对象
if(m_webBrowser.GetReadyState() == READYSTATE_COMPLETE)
ReleaseMutex(hMutex);//加载完成后释放互斥对象
WaitingForSingleObject(hMutex,10000);//等待互斥对象
全部回答
dword waitforsingleobject( handle hhandle, dword dwmilliseconds); 参数: hhandle[in]对象句柄。可以指定一系列的对象,如event、job、memory resource notification、mutex、process、semaphore、thread、waitable timer等。 dwmilliseconds[in]定时时间间隔,单位为milliseconds(毫秒).如果指定一个非零值,函数处于等待状态直到hhandle标记的对象被触发,或者时间到了。如果dwmilliseconds为0,对象没有被触发信号,函数不会进入一个等待状态,它总是立即返回。如果dwmilliseconds 为 infinite,对象被触发信号后,函数才会返回。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我在怀孕两个半月的时候吃了丽珠牌抗病毒颗粒
【liberate】Liberalizeliberate有什么区别?
丰州镇聂村村民委员会地址在哪,我要去那里办
justin bieber向中国捐赠了多少钱
win8怎么解除网络限速
胡家坊炒货在哪里啊,我有事要去这个地方
word 没到一行就换行了,怎么处理?
寒假初中日记30篇,要不长也不断的
【抗震设防】建设工程设计单位应当按照抗震设
小神美甲怎么去啊,有知道地址的么
爬华山长空栈道,摔死活该?这样危险的栈道也
停车场(黎明傈僳族乡三江并流国家重点风景名
话上不下成语
我想帮自己取个英文名,希望那位文化人士帮我
转角传感器的作用是什么?转角传感器,有没有
推荐资讯
负性和正性光刻胶有什么区别和特点?
笔记本电脑自带的鼠标不动了怎么办
帝王水族地址在什么地方,想过去办事
虞美睿隆鼻精油可以缩小鼻子吗
亿博航空售票怎么去啊,我要去那办事
添添来棋牌室地址有知道的么?有点事想过去
空压机放什么油
水星家纺(文化路店)地址在什么地方,我要处理
三星r429 加装内存条的话,什么型号最好呢?
冬天燃烧煤取暖会产生呛人的气体
日日红美容美发地址在什么地方,我要处理点事
从合肥明光路汽车站坐车到枣庄的车是不是没有
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?