Как определить в методе из interface параметр, ссылающийся на класс
От: vladimirmir2013  
Дата: 31.05.13 06:41
Оценка:
Вот к примеру имею класс:

class ATL_NO_VTABLE CIStorage :
 public CComObjectRootEx<CComSingleThreadModel>,
 public CComCoClass<CIStorage, &CLSID_DiagReport>,
 public IDispatchImpl<ICIStorage, &IID_ICIStorage, &LIBID_DiagReportLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
...
...
IFACEMETHODIMP (                        // Создает объект, который позволит нам работать с "IStorage interface"
 _Out_  CIStorage  **pCIStorage,
 _Out_  BOOL       *bResult = 0
);


CreateObjectStorage предназначен для создания и возврата в параметре opIStorage экземпляра объекта класса.

В idl интерфейс представлен как:

[ object,
  uuid( C002768D-287A-4BC8-B098-CDFC74BA9A16 ),
  dual,
  helpstring( "IStorage Interface" ),
  pointer_default(unique)
]

interface ICIStorage : IDispatch {
[ id(0),  
  helpstring( "Create object foe work with IStorage interface" ) 
] HRESULT CreateObjectStorage(
 [out]         CIStorage  **pCIStorage,
 [out, retval] BOOL       *bResult
);


Но idl компилируется с ошибкой:

Error 1 error MIDL2025: syntax error : expecting a type specification near "CIStorage" ...

Как подружить MIDL с CIStorage
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.