MFC - это более простой маршрут, если вы новичок в COM-материале: волшебники лучше и полезнее. Но это намного менее гибко, чем ATL, что, вероятно, не является проблемой, если вы просто используете пару интерфейсов simpole для реализации.
Кроме того, IIRC MFC не поддерживает двух интерфейсов. Двойные интерфейсы интересны в двух случаях: - Производительность - проблема. Например, вызов короткого метода выполняется миллионы раз. - Пользовательские объекты запрограммированы на C++. Вызов собственного интерфейса проще в C++, чем вызов интерфейса автоматизации.
В заключение, два интерфейса - это круто, но они действительно интересны, только если вы можете бесплатно их скачать. Это означает, что вы используете фреймворк, который их поддерживает. Если вы планируете Работа на базе COM, интересно исследовать в ATL и более глубокие знания COM. Если вам просто нужно предоставить несколько простых объектов на базе MFC, просто придерживайтесь MFC.
Если я добавлю поддержку ATL в проект mfc, а затем добавлю объект ATL ActiveX .. как я могу обернуть свой пользовательский cwnd в том, что Atl ActiveX ?? CWnd :: create хочет родительский CWnd * .. в MFC родитель будет COleControl (который является CWnd) .. ActiveX ATL является производным от CWindow .. – BabelFish