2017-01-20 16 views
3

Для разработки ActiveX, что я должен использовать? MFC или ATL?
В Microsoft Documents говорится, что мы можем использовать MFC для создания элементов управления ActiveX. Но когда я был гуглингом, я видел, как некоторые люди говорили, что ATL хорош для этой работы. Это то, что я получил от Wikipedia, который, похоже, подтверждает этот аргумент.
MFC vs ATL для ActiveX

ATL, с другой стороны, является более легкой альтернативой в ситуациях, когда графические части пользовательского интерфейса MFC не требуются.

Что следует использовать? Если я могу использовать оба варианта, каковы плюсы и минусы их использования?

ответ

5

Использование ATL. Я развиваюсь в MFC уже 20 лет. Для подавляющего большинства применений ATL - лучший выбор, потому что он легче и проще понять, хотя оба имеют крутую кривую обучения.

Единственная причина, я выбрал бы MFC над ATL для использования будет:

1) У меня очень сложный ActiveX/контроль окна Я пишу, и это имеет смысл, чтобы написать окно управления частью в MFC, и поэтому имеет смысл объединить COM-интерфейс управления в MFC. Однако для дополнительных объектов (скажем, свойство, возвращающее объект), я бы использовал ATL, если они тоже не были очень задействованным элементом управления окнами.

2) Я должен использовать OLE (связывание объектов и вложение) для типа документа, и для этого проще использовать встроенную инфраструктуру MFC.

Я работаю над тем же проектом MFC в течение более 20 лет, очень связанной программой Windows. Большинство аспектов программы выставляются COM. У нас есть смесь MFC COM и ATL COM. Когда я впервые начал работу, и до того, как ATL приобрел сцепление, я обычно реализовывал COM-объекты в MFC. Теперь, если что-то не соответствует двум причинам, я использую ATL.

Но это всего лишь мнение.

4

Несмотря на то, что с помощью MFC можно создавать компоненты ActiveX, ATL был разработан как легкая и эффективная альтернатива с более низким приоритетом. Кроме того, вы можете также использовать WTL поверх ATL для части GUI.

Я бы предложил использовать ATL (и WTL), если вы хотите использовать небольшой компонент ActiveX с меньшей нагрузкой.

4

ATL здесь мой № 1!

Это гораздо более гибкое решение при проектировании интерфейса и то, как обработка объектов COM чрезвычайно настраивается.

ATL также позволяет легко создавать двойные интерфейсы. У MFC есть только прямая реализация IDispatch.

Даже в моем приложении MFC я использую только внутренний ATL для всех COM-частей.