WinForms или WPF или Qt для Windows GUI с C / C ++ в качестве бэкэнда - PullRequest
8 голосов
/ 28 августа 2009

Я должен разработать приложение для Windows. Я никогда не делал этого раньше; -)

Мне нужно выполнить тяжелый расчёт звука, который должен быть написан на C / C ++. Эта часть будет алгоритмом коррекции помещения, который в настоящее время занимает около 10 секунд на канал для запуска в Matlab. Он должен быть написан на C / C ++, поскольку позже он может быть перенесен в DSP, который должен быть запрограммирован на C / C ++.

Кроме того, мне нужен графический интерфейс для просмотра расчетов, визуализации результатов и изменения параметров расчетов. Трудной частью этого графического интерфейса будет множество графиков спектров, спектрограмм, звуковых сигналов и т. П.

Теперь я слышал, что в графических интерфейсах Windows широко распространен WPF, но, похоже, он ограничен C #. Есть ли простой способ интегрировать мой код C / C ++ с некоторым кодом C # GUI? Или мне лучше взять WinForms и просто написать все это на C ++? Или Qt будет работать так же хорошо и предоставит некоторые кроссплатформенные возможности "бесплатно"?

У меня есть некоторый опыт разработки на C / C ++, Matlab и VST, но я никогда не писал реальных приложений и, честно говоря, даже не знаю, с чего начать.

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

Ответы [ 3 ]

6 голосов
/ 28 августа 2009

Я думаю, что самым большим недостатком использования WPF или WinForms является то, что вам придется программировать на двух языках программирования, что приводит к большим накладным расходам на логистику.

Я видел этот тип аргумента раньше: используйте C или C ++ для низкого уровня, что-то еще для высокого уровня. В этом случае Qt / C ++ находится на таком же высоком уровне, как и WPF / WinForms, с преимуществом очень простой интеграции пользовательского интерфейса с другим кодом C ++.

Для спектрограмм и других графиков посмотрите Qwt .

P.S .: WPF не так популярен в Windows, на самом деле рынок довольно фрагментирован, а WPF - один из наименее используемых инструментов GUI. Большая часть кода использует MFC, WTL, Delphi, Win32 и т. Д.

3 голосов
/ 28 августа 2009

У меня нет опыта работы с QT, но я могу сказать, что WPF хорош, но не так хорош для приложений с высокой загрузкой процессора, плюс вы не сможете легко напрямую интегрировать ваш c / c ++ с WPF.

Будет огромная кривая обучения, и вам придется писать COM-интерфейсы для связи с C # / WPF и вашим собственным кодом. или Visual C ++ .Net CLI, что довольно сложно и доступно меньше учебников.

Но проблема в том, что вы не получите никакой хорошей поддержки, поскольку многие люди используют только C #, приложения баз данных только с WPF / WinForms. Лучший способ сделать это - написать DLL-библиотеки COM для интеграции с WPF, но это будет сложно.

Вместо этого в MFC теперь доступны различные инструменты и множество других коммерческих библиотек, а также для написания хорошего пользовательского интерфейса на C ++ MFC, где интеграция будет намного проще, поскольку вы знакомы с C ++.

Или Qt, если вы уже это знаете.

Библиотека:

Prof-UIS

BCGSoft

Их может быть много, вы можете искать "Элементы пользовательского интерфейса MFC", Библиотеку и т. Д. Я использовал Prof-UIS еще в 2003-4 годах, они хороши.

2 голосов
/ 28 августа 2009

WPF свяжет вас с Windows, но не с каким-либо конкретным языком. Вы можете писать приложения WPF на C #, VB.NET, Managed C ++ или любом другом языке .NET.

Winforms аналогично привязан к Windows, но вы можете написать свое приложение таким образом, чтобы оно также работало на Mono и, следовательно, кроссплатформенно. Тем не менее, Winforms гораздо менее способный инструментарий, когда дело доходит до сложных визуализаций.

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

Если вы рады, что ваш графический интерфейс привязан к Windows и .NET, WPF - лучший вариант для визуальных приложений. Если вам не нужна зависимость от .NET или Windows, Qt кажется вам единственным вариантом.

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