VC程序调试到以下函数的ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least)这里就出现错误,然后自动跳到DebugBreak();并弹出一个错误窗口:xxxxx.exe中的0x7c92120e处未处理的异常:用户断点.请问如何解决这个问题?
void 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);
}
void 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);
}
去掉这行,就不会报错了。
这句话应该不是你自己写的吧
断下来后看调用堆栈
定位到自己的代码才好分析原因
===========
m_pCtrlSite 不是一个OLE控件,至少现在不是。
恐怕是你遗漏了初始化 或者 赋值什么的函数。
如果你是抄别人的代码,就好好看看源代码在调用此函数之前对m_pCtrlSite都做了哪些操作
long StreamInput(unsigned char * data, long size)
{
long result;
static BYTE parms[] = VTS_PUI1 VTS_I4 ;
InvokeHelper(0x58, DISPATCH_METHOD, VT_I4, (void*)&result, parms, data, size);
return result;
}后调用InvokeHelper(0x58, DISPATCH_METHOD, VT_I4, (void*)&result, parms, data, size);
函数的,就出现这个错误了