我有个列表控件m_AddressList和一个静态加入的WebBrowser控件m_ctrlWebBrowser放在在同一个位置(是在OnSize中: m_ctrlWebBrowser.MoveWindow(rightRc), m_AddressList.MoveWindow(rightRc)),然后在点击了列表控件中的某一个Url后就隐藏m_AddressList,显示WebBrowser控件m_ctrlWebBrowser。m_AddressList.ShowWindow(SW_HIDE);
m_ctrlWebBrowser.Navigate(_T("http://www.sina.com.cn/"), NULL, NULL, NULL, NULL);
m_ctrlWebBrowser.ShowWindow(SW_SHOW);
但是老是出现断言错误。即使点击“忽略错误”,列表控件m_AddressList消失了,但WebBrowser控件中还是一片空白,请问是怎么回事?
m_ctrlWebBrowser.Navigate(_T("http://www.sina.com.cn/"), NULL, NULL, NULL, NULL);
m_ctrlWebBrowser.ShowWindow(SW_SHOW);
但是老是出现断言错误。即使点击“忽略错误”,列表控件m_AddressList消失了,但WebBrowser控件中还是一片空白,请问是怎么回事?
Winocc.cpp
line:374 ,不知是什么错误。
// CWnd invoke helpers for OLE Control wrappersvoid AFX_CDECL CWnd::InvokeHelper(DISPID dwDispID, WORD wFlags, VARTYPE vtRet,
void* pvRet, const BYTE* pbParamInfo, ...)
{
ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least)就是这里出错!!! if (m_pCtrlSite == NULL)
return; va_list argList;
va_start(argList, pbParamInfo);
m_pCtrlSite->InvokeHelperV(dwDispID, wFlags, vtRet, pvRet, pbParamInfo,
argList);
va_end(argList);
}
if (m_ctrlWebBrowser.GetSafeHwnd())
m_ctrlWebBrowser.MoveWindow(RightRc);
就是这里出错!!!
AfxOleInit()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControls()。否则,将无法创建窗口。
InitCommonControls(); CWinApp::InitInstance(); // 初始化 OLE 库
if (!AfxOleInit())
{
AfxMessageBox(IDP_OLE_INIT_FAILED);
return FALSE;
}
AfxEnableControlContainer(); CLoginDlg dlg;
}
void Navigate(LPCTSTR URL, VARIANT * Flags, VARIANT * TargetFrameName, VARIANT * PostData, VARIANT * Headers)
{
static BYTE parms[] = VTS_BSTR VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT ;
InvokeHelper(0x68, DISPATCH_METHOD, VT_EMPTY, NULL, parms, URL, Flags, TargetFrameName, PostData, Headers);
}
然后就跳到Winocc.cpp
// CWnd invoke helpers for OLE Control wrappersvoid AFX_CDECL CWnd::InvokeHelper(DISPID dwDispID, WORD wFlags, VARTYPE vtRet,
void* pvRet, const BYTE* pbParamInfo, ...)
{
ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least)就是这里出错!!! if (m_pCtrlSite == NULL)
return; va_list argList;
va_start(argList, pbParamInfo);
m_pCtrlSite->InvokeHelperV(dwDispID, wFlags, vtRet, pvRet, pbParamInfo,
argList);
va_end(argList);
}出现断言错误
一般都是explorer.h才对
你是不是曾经导入过这个控件然后觉得不爽删掉了重新来过
要确保你删除干净了,应该是没有问题的
IID_IOleObject, (void**)&m_spOleObjectPreloadBrowser); 动态创建一个。