Открытие формы VB6 из приложения WPF - PullRequest
1 голос
/ 16 марта 2009

В настоящее время мы работаем над переносом старого приложения VB6 в WPF. На первом этапе планируется портировать несколько ключевых форм, а не все приложения. Поднят вопрос, что мы можем попытаться открыть часть старой формы VB6 из приложения WPF (в виде модальных форм), что обеспечит большую функциональность, чем предполагалось на первом этапе.

Мой вопрос к вам, друзья, прежде всего, возможна ли такая мерзость :)? Можно ли открыть формы VB6 из приложения WPF?

Спасибо, Shahaf.

Ответы [ 2 ]

0 голосов
/ 16 марта 2009

Что вам нужно сделать, это упаковать формы в DLL ActiveX и предоставить классы, которые могут устанавливать начальные значения, вызывать формы и возвращать любые значения, которые они изменяют.

Например, в моих собственных приложениях CAD / CAM у нас есть формы, затем слой, который не содержит ничего из командных объектов (классов, реализующих шаблон проектирования команд), которые модифицируют модель, и все модели, написанные на VB6.

Некоторые из команд вызывают диалоги, которые являются формами VB6. Некоторые из них простые, а другие сложные. Первым этапом нашего конверсионного проекта было удаление верхнего слоя формы и его замена на эквивалент .NET. Новые формы .NET ссылаются на активные библиотеки DLL, содержащие объект Command.

Работало нормально. Существовали некоторые визуальные различия между внешним видом .NET и внешним видом формы VB6, но кроме диалоговых окон команд работали так же, как в исполняемом файле VB6.

Одно предостережение: если вы продолжаете изменять исходные DLL-библиотеки ActiveX во время этого процесса, сборка программы .NET становится немного труднее. В отличие от VB6, .NET не так автоматичен, когда дело доходит до обновленных ссылок на более новые версии библиотеки ActiveX, на которую ссылаются. Решение простое: вы отбрасываете исходную ссылку, а затем добавляете новую ссылку.

0 голосов
/ 16 марта 2009

Да, это возможно; в зависимости от того, как сильно вы готовы работать. Поддерживаются следующие ключевые сценарии (примечание: существуют и другие поддерживаемые сценарии, но это key ):

  1. WPF -> WinForms
  2. WinForms -> WPF

Учитывая, что с VB6 все ваши объекты являются COM-объектами, вы можете разместить их в WPF через WinForms. Это место на MSDN, где я бы рекомендовал вам начать:

Есть также несколько действительно хороших книг по WPF, которые описывают взаимодействие с WPF (в обоих направлениях) в порядке предпочтения по этой теме:

  • WPF Unleashed (Адам Натан)
  • Программирование WPF (Крис Селлс и Ян Гриффитс)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...