解决方案 »

  1.   

    应该得创建容器才行了
    _DNetworkPtr t = NULL;
    CWnd *pWnd = new CWnd;
    pWnd->CreateControl(__uuidof(Network), NULL, WS_VISIBLE|BS_OWNERDRAW, CRect(10,10,150,50), this, 1111);
    IUnknown *pIUnknown = pWnd->GetControlUnknown ();
    pIUnknown ->QueryInterface(IID_DOcxTest, (LPVOID*)&t);
    pIUnknown ->Release();
    t->Run(...);
      

  2.   

    字符串参数  为什么不适用BSTR 类型?
      

  3.   

    请问 fishion 兄 IID_DocxTest 是哪里定义的,我的OCX工程名为 Network 
      

  4.   

    已测试改为 BSTR 类型,无效,ActiveX Control Test Container 调用 Run 也不行了,但是如果我新建一个不带任何参数的方法 比如 Go() ,ActiveX Control Test Container  就能有效调用,但程序中用 t->Go() 调用也不行。
      

  5.   

    到处翻看相关内容,误打误撞搞定了,在控件的ctrl类里重载 IsInvokeAllowed 方法返回 TRUE 即可。
    在CNetworkCtrl.h 里添加BOOL IsInvokeAllowed (DISPID);在 CNetworkCtrl.cpp 里BOOL CNetworkCtrl::IsInvokeAllowed (DISPID)
    {
    // You can check to see if COleControl::m_bInitialized is FALSE
    // in your automation functions to limit access.
    return TRUE;
    }相关链接:
    http://bbs.csdn.net/topics/390190748
    http://blog.sina.com.cn/s/blog_6d4b374e0101cpu1.html
    http://blog.csdn.net/xiliang_pan/article/details/8524439
    感谢2位!