对CoCreateInstance的第二次调用再次创建Application对象

时间:2011-09-20 06:41:00

标签: com atl

我有一个包含两个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);

任何建议都非常感谢。

0 个答案:

没有答案