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);
}

解决方案 »

  1.   

    m_pCtrlSize == NULL,把assert断言去掉
      

  2.   

    ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least)
    去掉这行,就不会报错了。
      

  3.   

    ASSERT(m_pCtrlSite != NULL)
    这句话应该不是你自己写的吧
    断下来后看调用堆栈
    定位到自己的代码才好分析原因
      

  4.   

    ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least)
    ===========
    m_pCtrlSite 不是一个OLE控件,至少现在不是。
    恐怕是你遗漏了初始化 或者 赋值什么的函数。
    如果你是抄别人的代码,就好好看看源代码在调用此函数之前对m_pCtrlSite都做了哪些操作
      

  5.   

    Debug下,打开call stack窗口先看看哪个函数调用出错?
      

  6.   

    m_pCtrlSite  没有指向一个实例,无效的指针
      

  7.   

    我的程序是运行到函数
    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);
    函数的,就出现这个错误了
      

  8.   

    没有控件变量?那你的StreamInput是写在哪里的?
      

  9.   

    你的程序中做com组件初始化了么
      

  10.   

    AfxEnableActiveControlContainer()加了没?