Re: Намеренные переопределения типов в IDL не проходят
От: Аноним  
Дата: 22.01.06 23:10
Оценка:
Здравствуйте, GSerg, Вы писали:

GS>Здравствуйте.


GS>Есть у меня задача написать большую dll с COM-классами на ATL для использования её в VB6 (иные варианты не рассматриваются, даже не предлагайте ).

GS>Никогда этим ранее не занимался.

GS>Начал с того, что создал в VS проект Windows DLL, добавил туда idl-файл и попробовал немного написать этот idl. На пробу, как первый шаг к дальнейшей работе. В первых строках данного файла примерно такое:

GS>
GS>//VB-совместимость
GS>typedef long   DWORD;
GS>typedef DWORD *LPDWORD;
GS>typedef DWORD *PDWORD;
GS>typedef short  WORD;
GS>typedef long   UINT;
GS>typedef long   HWND;
GS>typedef byte   CHAR;
GS>typedef byte   UCHAR;
GS>typedef wchar_t *PCWSTR;
GS>typedef short  WCHAR;
GS>typedef long   HDC;
GS>typedef long   HMONITOR;
GS>typedef long   HMODULE;
GS>typedef long   HANDLE;
GS>typedef void*  LPCVOID;
GS>

GS>Далее идут всякие struct и interface (до фигища).
GS>Разумеется, импорт виндовских типов MIDL делает сам из wtypes.idl, и мои переопределения идут после этого импорта.
GS>Так вот, всё это прекрасно компилируется в tlb, и эта tlb прекрасно видится из VB6. Описал один coclass на пробу — создаётся, и методы вызываются.

Подход не верен в принципе. VB6 нужны IDispatch интерфейсы, и ваши структуры и т.п. работать не будут. Кроме того, не будет работать typelibrary маршаллинг. Пакуйте структуры в интерфейсы и используйте только Automation types.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.