От MFC Dialog к COM...
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Решаю, осваивать ли COM-технологию ?
Написаны DLL на VC++ 6, содержащие MFC-классы диалогов.
Теперь требуется их переработать и в будущем разрабатывать новые классы, которые можно было бы использовать и в VC++ 6, и в C++.net и в C#.net ?
Написаны DLL на VC++ 6, содержащие MFC-классы диалогов.
Теперь требуется их переработать и в будущем разрабатывать новые классы, которые можно было бы использовать и в VC++ 6, и в C++.net и в C#.net ?
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Переделка содержимого диалогов в ActiveX элемент управления, или самого диалога в COM объект - это действительно выход из данной ситуации. Платформа .NET чудесным образом умеет дружить с COM, потому всё будет работать как в VC 6, так и в C++.NET и C#.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
.NET конечно хорошо взаимодействует с СОМ-объектами, но в данном случае это будет не самым лучшим решением.
На мой взгляд, лучше оставить существующую DLL такой, какая она есть. А для платформы .NET создать отдельную сборку и реализовать аналогичные визуальные формы с помощью Windows.Forms и языка C#.
Альтернативный вариант: в проект существующей DLL включить поддержку CLR и с помощью C++/CLI сделать классы-обёртки для уже существующих классов С++. Тогда она становится доступной для программирования в языках CLR. К тому же в свойствах проекта CLR-сборки можно включить опцию совместимости с СОМ и она автоматически становится СОМ-объектом.
Если же переделывать существующую DLL в СОМ-объект без использования CLR, то нужно будет фактически создавать новый проект СОМ-сервера и переносить в него уже существующий код из ранее созданного проекта DLL.
На мой взгляд, лучше оставить существующую DLL такой, какая она есть. А для платформы .NET создать отдельную сборку и реализовать аналогичные визуальные формы с помощью Windows.Forms и языка C#.
Альтернативный вариант: в проект существующей DLL включить поддержку CLR и с помощью C++/CLI сделать классы-обёртки для уже существующих классов С++. Тогда она становится доступной для программирования в языках CLR. К тому же в свойствах проекта CLR-сборки можно включить опцию совместимости с СОМ и она автоматически становится СОМ-объектом.
Если же переделывать существующую DLL в СОМ-объект без использования CLR, то нужно будет фактически создавать новый проект СОМ-сервера и переносить в него уже существующий код из ранее созданного проекта DLL.
Для .NET пока сам не программировал, и м.б. поэтому из Вашего ответа не понял, как будет возможно использовать новые классы в VC 6 ?
Когда создаёшь CLR-сборку, можно в свойствах проекта установить опцию COM-compatible, что добавляет в этот модуль библиотеку типов и через СОМ-интерфейс делает этот модуль доступным для других языков программирования (таких как С++, VBA, JavaScript и пр.).
Правильно ли я понял ?
Вы предлагаете исходники, написанные на VC++ 6, скопировать в проект на C++/CLI и к ним добавить обертки для классов.
Надо будет изменять синтаксис исходников ?
И как произойдёт преобразование вызовов MFC ?
Вы предлагаете исходники, написанные на VC++ 6, скопировать в проект на C++/CLI и к ним добавить обертки для классов.
Надо будет изменять синтаксис исходников ?
И как произойдёт преобразование вызовов MFC ?
Visual С++ 2005 и выше позволяет включить поддержку CLR в уже существующий проект. Т.е. первоначальный исходный код преокта менять не нужно. Надо лишь написать на C++/CLI обращение к уже существующим функциям и классам MFC. Тогда этот модуль станет доступным для использования в других .NET-приложениях.
Спа-си-бо за ответы.
Буду пробовать, сделать то, что Вы рекомендуете...
Надеюсь, что не потрачу ВРЕМЯ и СИЛЫ зря...
Претензий нет и не будет.
До следующих вопросов.
ALTOM.
Буду пробовать, сделать то, что Вы рекомендуете...
Надеюсь, что не потрачу ВРЕМЯ и СИЛЫ зря...
Претензий нет и не будет.
До следующих вопросов.
ALTOM.