Элементы управления C# в приложении MFC

#c# #.net #c #user-interface #interop

Вопрос:

Я отвечаю за пользовательский интерфейс приложения, полностью написанного на Visual C с использованием MFC и некоторых элементов управления из третьих частей. Я хотел бы использовать C# (WinForms или даже лучше WPF) для улучшения внешнего вида приложения.

Я хотел бы получить несколько советов о том, как это сделать. Ссылки, статьи, примеры…

Прямо сейчас пользовательский интерфейс изолирован в одном проекте, и я не хочу компилировать весь модуль с помощью CLR. Так как же мне это сделать с архитектурной точки зрения?

Я уже посмотрел в Интернете на эту тему и прочитал информацию MSDN. Я хотел бы получить более подробную информацию information…is это удобно? плюсы/минусы? успешно ли вы использовали этот подход в «большом» приложении? Я не хочу компилировать весь проект пользовательского интерфейса с помощью CLR…могу ли я просто иметь все .ЧИСТЫЙ код в изолированном проекте и вызвать его из проекта пользовательского интерфейса? как лучше всего это сделать?

Заранее спасибо.

Комментарии:

1. Знаете ли вы, что многие из визуальных стилей, которые вы могли бы ожидать, недоступны в .NET? Вы не можете ожидать, что ваша программа будет выглядеть как приложения MS Office 2003 или даже 2007 из коробки. Для этого вам все еще нужно дополнительное программное обеспечение для WinForms, так как оно не входит в стандартный пакет .NET.

Ответ №1:

Хорошей отправной точкой является страница взаимодействия Win32 и WPF в MSDN.

Ответ №2:

Я обнаружил, что эта статья codeproject дает хорошее введение в тему смешивания кода mfc / winforms.

Ответ №3:

Столкнувшись с той же проблемой, я создал элемент управления ActiveX на C# и использовал его в своем приложении MFC. Сотрудники MS поддержали создание элементов управления ActiveX с помощью .NET, но это все еще возможно сделать с помощью простого класса Jane COM, который имеет пользовательский [ComRegisterFunction()] и [ComUnregisterFunction] .

Хотя MS хотела бы сказать нам, что флаг /clr решит наши проблемы, это заметно замедлило работу моего большого приложения MFC.