Что касается учебников :
Я не нашел действительно хорошего онлайн. При использовании ATL / COM есть несколько OK страниц:
- Активная библиотека шаблонов делает
Создание компактных COM-объектов
Радость от Дона Бокса (ветеран-гуру
COM). Эта статья начинается: «Я люблю
COM. COM это хорошо. Как хороший пилснер
или эль, COM никогда не разочаровывает. В
На самом деле, чем больше я смотрю на COM, тем
больше мне это нравится. К сожалению работаю
в C ++, и C ++ не разделяет мои
благодарность за прекрасные вещи в
жизнь ". Несмотря на гроссмейстерские
прозелитизм, и тот факт, что это
12 лет сейчас, это очень хорошо
статья ...
- Отличный учебник Майка Данна по
COM в CodeProject.
- Советы DevGuy по C ++ COM - своего рода мешанина ссылок и предложений.
- Поваренная книга программиста COM - эта древняя (1995 г.) статья неплоха, несмотря на ее возраст и тот факт, что в ней описывается реализация COM-объектов в C, а не в C ++ (явные таблицы vtables!)
Я немного ржавый с COM и ATL, но если я правильно помню, классы, которые вы захотите узнать, вы будете использовать чаще всего (особенно если вы используете COM-объекты кого-то другого, а не чем реализация своих собственных) - это CComBSTR, CComPtr и CComVariant. Кроме того, оператор #import в Visual C ++ значительно упрощает использование внешних объектов COM, он генерирует класс интеллектуальных указателей для вас из внешней DLL или EXE.
Если вы собираетесь реализовывать COM-объекты, я настоятельно рекомендую получить копию ATL Internals (есть более новая редакция, охватывающая ATL v8). Да, в некоторых разделах речь идет о мрачных подробностях, но даже в качестве вступительной книги она довольно хорошо написана.
Если вы никогда не использовали COM раньше, «классические» книги Essential COM и Effective COM очень хороши, и вы, вероятно, можете получить их недорого из ваших любимых источников использования. книг. Вы также захотите познакомиться с идиомой RAII , если вы еще этого не сделали.
Группа новостей microsoft.public.vc.atl очень хороша для того, чтобы задавать конкретные вопросы. (хотя, как правило, они более грубые, чем в StackOverflow)
Осторожно: с COM есть много маленьких ошибок, хотя ATL помогает сделать его намного проще и без лишних хлопот. Методы «симулированного динамического связывания», также известные как CRTP , полезны в мире C ++, не только в контексте ATL / COM, но особенно, если вы разрабатываете библиотеку повторно используемых классов, которые вы хотите создать в подклассе или смешать в ситуации, когда одновременно присутствует только один экземпляр (например, класс CSpiffyFramework, который предоставляет смешанную функциональность, которую вы хотите многократно использовать, и у вас есть производный класс, который вы хотите включить эту функциональность, и он не является частью модели виртуальных объектов так что вам на самом деле не нужен vtable).
Удачи!