【发布时间】:2012-01-04 21:22:23
【问题描述】:
我有一个由 VB6 COM 对象实现的接口 (ITask)。我有一个使用该接口的 C++ COM 对象,它通常工作正常。
但是,当我运行 VB6 调试器来调试 VB6 COM 对象时,我的 C++ 对象在它为 ITask 接口调用 VB6 对象上的 QueryInterface 时突然返回 E_NOINTERFACE。
接口定义:
[
object,
uuid(XXXX),
pointer_default(unique),
oleautomation
]
interface ITask : IUnknown
{
[id(1)] HRESULT CreateTask([in, string] BSTR taskName);
}
C++ 代码:
hResult = pDisp->QueryInterface(IID_ITask, (void **) &m_pTaskApp);
(pDisp 是我通过调用管理对象生命周期的不同组件获得的 VB6 COM 对象的 IDispatch *)
当 VB6 COM 对象正在运行调试器时,对 IID_IDispatch 的 QueryInterface 的调用成功。
有什么想法吗?
编辑 - 添加 VB6 代码:
Implements ITask
Private Sub ITask_CreateTask(ByVal taskName as String)
' do stuff
End Sub
【问题讨论】:
-
这是您正在实例化的 VB6 中的类还是用户控件?