对话框中的ActiveX控件的调用问题VC6下面的基于对话框的MFC程序。我用的ActiveX控件是MSFlexGrid,我是通过appwizard生成一个.exe的app工程,对于控件的引用是从Porject->Add to Project->compnents and controls加入,然后在资源编辑器中把控件拖入到对话框上。然后在对话框类中加入变量(CMSFlexGrid m_ctlFlexGrid)于此控件关联。在对话框中我还新建了一个静态变量,它是控件MSFlexGrid的句柄(m_hFlexGrid),在对话框的OnInitDialog中对句柄进行赋值。
有另外一个线程,它根据这个静态句柄对控件进行操作:CMSFlexGrid *pWnd = static_cast<CMSFlexGrid*>(CWnd::FromHandle(m_hFlexGrid));
ASSERT(pWnd && ::IsWindow(pWnd->m_hWnd));
pWnd->AddItem(/*省略*/); // 此句触发下面所示断言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)
}我该怎么做?各位大虾帮忙呀!救命呀!!!

解决方案 »

  1.   

    我已经在C***App::InitInstance里面调用AfxEnableControlContainer()了。
      

  2.   

    应用程序支持ActiveX 
    初始化的时候AfxEnableControlContainer();
    add #include "afxdisp.h" in the stdafx.h file
      

  3.   

    CWnd::FromHandle返回的是CTempWnd类的指针
    你需要列集你的操作,例如发消息到主线程去操作FlexGrid
      

  4.   

    to  jiangsheng:"列集"操作?这个好像是com里面的概念呀。这个是activeX控件呀,我怎么知道AddItem对应的是哪个消息,以及消息的参数怎么设呀。能给我写点例程么,谢谢了