У меня есть COM-компонент с двумя CoClasses
.
IMyApp
- это интерфейс моего приложения CoClass
. IFunction
- это мой второй ColClass
интерфейс.
Впервые, когда я создаю объект IMyApp, используя CoCreateInstance, а затем объект IFunction
, используя CoCreateInstance
, все работает нормально.
Проблема: теперь снова, когда я пытаюсьДля создания объекта IFunction
с использованием CoCreateInstance
он вызывает инициализацию моего основного приложения IMyApp
.
Ниже приводится содержимое моей библиотеки файлов 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);
Любое предложение действительно приветствуется..