Хочу написать свои собственные Сom объекты, который будит работать с Direct D2. Для их инициализации им нужно передать интерфейс ID2D1DeviceContext и рад методов будут принимать и возвращать указатели на интерфейсов вида ID2D1xxx, которые объявлены только в h-файлах, в частности D1D2.h, D1D2_1.h и др., но не объявлены ни в одном файле idl.
Новые интерфейсы я объявляю в IDL-файле.
Как я понял, чтобы объявить в моих интерфейсах аргументы, которые указывают на эти интерфейсы, они должны быть объявлены в IDL-файлах
Среда разработки MSVS 2015 C++
Re: Интерфейс объявлен только в h-файле, но не idl
Здравствуйте, Melamed, Вы писали:
M>чтобы объявить в моих интерфейсах аргументы, которые указывают на эти интерфейсы, они должны быть объявлены в IDL-файлах
Кому именно должны? Если предполагается из IDL делать что-то другое, для чего он и придуман (я с этим никогда не разбирался, нужды не было), то должны. Если для работы с Вашими COM-объектами кто-то будет писать на C++ софт, заточенный именно под них, то он может обойтись только Вашими .h, IDL для этого не требуется. Если же объекты реализуют только уже известные интерфейсы, то Ваши собственные определения вообще никому не нужны — всем остальным достаточно имеющихся, по которым генерируются vtables.
Re: Интерфейс объявлен только в h-файле, но не idl
Здравствуйте, Melamed, Вы писали:
M>Хочу написать свои собственные Сom объекты, который будит работать с Direct D2. Для их инициализации им нужно передать интерфейс ID2D1DeviceContext и рад методов будут принимать и возвращать указатели на интерфейсов вида ID2D1xxx, которые объявлены только в h-файлах, в частности D1D2.h, D1D2_1.h и др., но не объявлены ни в одном файле idl. M>Новые интерфейсы я объявляю в IDL-файле. M>Как я понял, чтобы объявить в моих интерфейсах аргументы, которые указывают на эти интерфейсы, они должны быть объявлены в IDL-файлах M>Среда разработки MSVS 2015 C++
Вроде бы гуглятся IDL файлы для твоих интерфейсов?
Не уверерен есть ли они в SDK, но на гитхабе точно есть, вот например
Здравствуйте, bnk, Вы писали:
bnk>Здравствуйте, Melamed, Вы писали:
M>>Хочу написать свои собственные Сom объекты, который будит работать с Direct D2. Для их инициализации им нужно передать интерфейс ID2D1DeviceContext и рад методов будут принимать и возвращать указатели на интерфейсов вида ID2D1xxx, которые объявлены только в h-файлах, в частности D1D2.h, D1D2_1.h и др., но не объявлены ни в одном файле idl. M>>Новые интерфейсы я объявляю в IDL-файле. M>>Как я понял, чтобы объявить в моих интерфейсах аргументы, которые указывают на эти интерфейсы, они должны быть объявлены в IDL-файлах M>>Среда разработки MSVS 2015 C++
bnk>Вроде бы гуглятся IDL файлы для твоих интерфейсов? bnk>Не уверерен есть ли они в SDK, но на гитхабе точно есть, вот например
bnk>https://github.com/wine-mirror/wine/blob/master/include/d2d1_1.idl
Я скачал их, но они конфликтуют с SDK. Пришлось обойтись интерфейсом IUnknown, где мой COM-объект запрашивает интерфейс ID2D1DevicetContext. Кстати, это заставило меня сделать лишнюю проверку интерфейса, что повысило безопасность его работы