[C++] Google Earth COM API

solambo

Есть задача управления программой Google Earth (версия с exe-клиентом, а не плагин к браузеру). Программно поворачивать камеру, изменять масштаб и т.д.
По этому делу нашел вот это.
Никогда раньше с COM API не работал, подскажите с чего начать и как в итоге обращаться ко всем членам классов, описанным по приведенной ссылке.
Работаю в С++ Builder, но это не принципиально наверно.
Спасибо

elenangel

тебе нужно скачать idl и попробовать скормить его билдеру. по идее должны появиться соответствующие компоненты и заголовочные файлы. далее поможет автокомплит и мозг. с билдером я не работал, а вот с дельфей пробовал - она даже из dll содержащей COM класс умела выдирать заголовки и делать компоненты.
ну и там всякие CoInitialize; CoCreateInstance; IUnknown IDispatch заботай или хотя бы в общих чертах почитай что это такое.

elenangel

для всех классов, которые реализуют IDispatch ты можешь создать экземпляр зная clsid с помощью CoCreateInstance, затребовать от него интерфейс IDispatch, присвоить результат переменной вариантного типа (в дельфе Variant, подозреваю в билдере тоже) и далее использовать вызовы вида твоя_переменная_типа_variant.MemberFunction(param1,param2,...);
неудобства в том, что при таком способе:
(1) не работает автодополнение при наборе в IDE;
(2) если интерфейс не имеет соответствующего метода, то крит вылетит только в рантайме, компилятор это проверить не может;
(3) нужно точно знать спецификацию используемого интерфейса, передаваемые параметры etc.
если же сумеешь проинсталить библиотеку или idl в билдер, то получишь полноценный компонент, с которым можно работать привычным способом.

solambo

спасибо огромное!
разобрался, все работает)
Оставить комментарий
Имя или ник:
Комментарий: