问题如下:(请对照后面的代码)
1. 下面这个函数,有时能成功执行,有时会弹出 ASSERT 致命错误框。我跟踪调试过,经常到 pHD->write(pSFArray); 这句就ASSERT 致命错误,而且按F11也不能跟踪到write函数内部。
2. 有时就是执行完毕了,但是对应的 Web Browser 控件的页面却没有显示,鼠标放上去是等待的图标。
3. 有时又能成功执行,没有一点问题。 搞了很久,一直没找出错误原因。哪位大侠有经验,帮忙看看,THX !!
代码如下: (m_exploreView 为 CWebBrowser2) void CGameInfoDlg::DisplayInExplore(CString strContent)
{
//显示出来 IHTMLDocument2* pHD=(IHTMLDocument2*) m_exploreView.GetDocument();
VARIANT* pVATable=NULL;
SAFEARRAY* pSFArray;
pSFArray = SafeArrayCreateVector(VT_VARIANT, 0, 1);
if(pSFArray!=NULL && pHD!=NULL)
{
SafeArrayAccessData(pSFArray,(LPVOID*) &pVATable);
BSTR bstrContent=strContent.AllocSysString();
pVATable->vt=VT_BSTR;
pVATable->bstrVal=bstrContent;
SafeArrayUnaccessData(pSFArray);
pHD->write(pSFArray);
}
else
{
MessageBox("数据显示出错!");
} SysFreeString(pVATable->bstrVal);
if(pSFArray!=NULL)
{
SafeArrayDestroy(pSFArray);
}}
1. 下面这个函数,有时能成功执行,有时会弹出 ASSERT 致命错误框。我跟踪调试过,经常到 pHD->write(pSFArray); 这句就ASSERT 致命错误,而且按F11也不能跟踪到write函数内部。
2. 有时就是执行完毕了,但是对应的 Web Browser 控件的页面却没有显示,鼠标放上去是等待的图标。
3. 有时又能成功执行,没有一点问题。 搞了很久,一直没找出错误原因。哪位大侠有经验,帮忙看看,THX !!
代码如下: (m_exploreView 为 CWebBrowser2) void CGameInfoDlg::DisplayInExplore(CString strContent)
{
//显示出来 IHTMLDocument2* pHD=(IHTMLDocument2*) m_exploreView.GetDocument();
VARIANT* pVATable=NULL;
SAFEARRAY* pSFArray;
pSFArray = SafeArrayCreateVector(VT_VARIANT, 0, 1);
if(pSFArray!=NULL && pHD!=NULL)
{
SafeArrayAccessData(pSFArray,(LPVOID*) &pVATable);
BSTR bstrContent=strContent.AllocSysString();
pVATable->vt=VT_BSTR;
pVATable->bstrVal=bstrContent;
SafeArrayUnaccessData(pSFArray);
pHD->write(pSFArray);
}
else
{
MessageBox("数据显示出错!");
} SysFreeString(pVATable->bstrVal);
if(pSFArray!=NULL)
{
SafeArrayDestroy(pSFArray);
}}
IHTMLDocument2::close
我的QQ是8022647,能不能加我qq指导下? THX very much ...代码如下:
LPDISPATCH lpdRet;
IHTMLDocument2* pHD=(IHTMLDocument2*) m_exploreView.GetDocument();
pHD->open(
CComBSTR("text/html"),
CComVariant(CComBSTR("replace")),
CComVariant(CComBSTR("")),
CComVariant((bool)1),
&lpdRet
);
VARIANT* pVATable=NULL;
SAFEARRAY* pSFArray;
pSFArray = SafeArrayCreateVector(VT_VARIANT, 0, 1);
if(pSFArray!=NULL && pHD!=NULL)
{
SafeArrayAccessData(pSFArray,(LPVOID*) &pVATable);
BSTR bstrContent=strContent.AllocSysString();
pVATable->vt=VT_BSTR;
pVATable->bstrVal=bstrContent;
SafeArrayUnaccessData(pSFArray);
pHD->write(pSFArray);
pHD->close();
}
else
{
MessageBox("Display Error!");
}
lpdRet->Release();
SysFreeString(pVATable->bstrVal);
if(pSFArray!=NULL)
{
SafeArrayDestroy(pSFArray);
}