MFC下WaitForSingleObject用法

来源:百度知道 编辑:UC知道 时间:2024/04/30 22:28:31
初学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);//等待互斥对象