已测试改为 BSTR 类型,无效,ActiveX Control Test Container 调用 Run 也不行了,但是如果我新建一个不带任何参数的方法 比如 Go() ,ActiveX Control Test Container 就能有效调用,但程序中用 t->Go() 调用也不行。
到处翻看相关内容,误打误撞搞定了,在控件的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位!
_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(...);
在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位!