我有一个包含两个CoClasses
的COM组件。
IMyApp
是我的应用CoClass
界面。IFunction
是我的第二个ColClass
界面。第一次使用CoCreateInstance创建IMyApp对象并使用IFunction
跟随CoCreateInstance
对象时,一切正常。
问题:
现在,当我尝试使用IFunction
创建CoCreateInstance
的对象时,它再次调用我的主应用程序IMyApp
的initinstance。
以下是我的IDL文件库内容:
library DemoPrjLib
{
Importlib("stdole2.tlb");
[
uuid(661CAC63-8F13-473B-8857-48233A668029),
helpstring("MyApp Class")
]
coclass MyApp
{
[default] interface IMyApp;
};
[
uuid(104A759B-1088-435C-A2F3-7F5FD13C233A),
helpstring("Function Class")
]
coclass Function
{
[default] interface IFunction;
};
};
// Creating Application object first time with success
::CoCreateInstanceEx(_uuidof(MyApp), 0, CLSCTX_ALL, &oServerInfo, 1, multi_qi);
// Now creating object of IFunction
CComPtr<IFunction> pFunction;
HRESULT hr = pFunction.CoCreateInstance (CLSID_Function); // this goes sucessfully
if (pFunction)
{
AfxMessageBox ("Works fine!!!");
}
if (pFunction)
pFunction.Release ();
// Problem Here: below call creates MyApp instance again i.e. it calls initinstance of my COM Application
hr = pFunction.CoCreateInstance (CLSID_Function);
任何建议都非常感谢。