2009-08-28 18 views
8

Ich bin eine Anwendung auf Windows zu entwickeln. Ich habe das vorher noch nie gemacht ;-)WinForms oder WPF oder Qt für Windows GUI mit C/C++ als Backend

Ich muss etwas schwere Audiobearbeitung machen, die in C/C++ geschrieben werden muss. Dieser Teil wird ein Raumkorrekturalgorithmus sein, der derzeit etwa 10 Sekunden pro Kanal benötigt, um in Matlab zu laufen. Es muss in C/C++ geschrieben werden, da es später auf einen DSP portiert werden kann, der in C/C++ programmiert werden muss.

Außerdem brauche ich eine GUI, um Berechnungen zu überprüfen, Ergebnisse zu visualisieren und Berechnungsparameter zu ändern. Der schwierige Teil dieser GUI wird viel Plotten von Spektren, Spektrogrammen, Audio-Wellenformen und dergleichen sein.

Nun, ich höre, dass WPF in Windows GUIs der letzte Schrei ist, aber es scheint auf C# beschränkt zu sein. Gibt es eine einfache Möglichkeit, meinen C/C++ Code mit irgendeinem C# GUI Code zu integrieren? Oder soll ich lieber WinForms nehmen und einfach alles in C++ schreiben? Oder würde Qt genauso gut funktionieren und einige plattformübergreifende Fähigkeiten "kostenlos" zur Verfügung stellen?

Ich habe einige Erfahrung mit C/C++, Matlab und VST-Entwicklung, aber ich habe nie eine echte Anwendung geschrieben und ehrlich, ich weiß nicht einmal, wo ich anfangen soll.

Vielen Dank im Voraus!

+2

Für C++ Qt ist das beste GUI-Toolkit. – Sharique

Antwort

6

Ich denke, der größte Nachteil bei der Verwendung von WPF oder WinForms ist, dass Sie in zwei Programmiersprachen programmieren müssen, was einen großen Logistikaufwand bedeutet.

Ich habe diese Art von Argument vor gesehen: Verwenden Sie C oder C++ für niedrige Ebene, etwas anderes für hohe Ebene. In diesem Fall ist Qt/C++ so hoch wie WPF/WinForms, mit dem Vorteil einer sehr einfachen Integration von UI in Ihren anderen C++ - Code.

Für Spektrogramme und andere Graphen überprüfen Sie Qwt.

P.S: WPF ist nicht der letzte Schrei auf Windows, in der Tat ist der Markt ziemlich fragmentiert und WPF ist einer der weniger verwendeten GUI Toolkits. Der meiste Code verwendet MFC, WTL, Delphi, Win32 usw.

2

WPF verbindet Sie mit Windows, aber nicht mit einer bestimmten Sprache. Sie können WPF-Anwendungen in C#, VB.NET, Managed C++ oder jeder anderen .NET-Sprache schreiben.

Winforms ist in ähnlicher Weise an Windows gebunden, aber möglicherweise können Sie Ihre Anwendung so schreiben, dass sie auch unter Mono ausgeführt wird und daher plattformübergreifend ist. Bei komplexen Visualisierungen ist Winforms jedoch weit weniger leistungsfähig.

Interop zwischen .NET und nativen Anwendungen ist sehr stark, aber es ist sicher, dass Sie zumindest ein wenig Schmerzen verursachen. Auf der anderen Seite kann die Implementierung der Schnittstelle in einer nativen Umgebung noch mehr Schmerzen verursachen.

Wenn Sie froh sind, dass Ihre GUI an Windows und .NET gebunden ist, ist WPF die beste Option für hochvisuelle Anwendungen. Wenn Sie keine Abhängigkeit von .NET oder Windows wünschen, scheint Qt Ihre einzige Option zu sein.

3

Ich habe keine Erfahrung mit QT, aber ich kann sagen, dass WPF gut ist, aber es ist nicht so gut für Anwendungen mit hoher CPU-Auslastung, und Sie können Ihr c/C++ nicht direkt mit WPF integrieren.

Es wird eine große Lernkurve geben und Sie müssen COM-Schnittstellen schreiben, um mit C#/WPF und Ihrem systemeigenen Code zu kommunizieren. oder Visual C++ .Net CLI, was ziemlich schwierig ist und weniger Tutorials verfügbar sind.

Aber das Problem ist, dass Sie keinen guten Support bekommen werden, weil viele Leute nur C#, Datenbank-Apps nur mit WPF/WinForms verwenden. Der beste Weg ist, COM-DLLs zu schreiben, um sie mit WPF zu integrieren, aber das wird schwierig.

Stattdessen gibt es verschiedene Tools jetzt in MFC, und viele andere kommerzielle Bibliotheken sind auch verfügbar, gute Benutzeroberfläche in C++ MFC schreiben, wo die Integration wird einfacher sein, da Sie mit C++ vertraut sind.

Oder sonst Qt, wenn Sie es bereits wissen.

Bibliotheken:

Prof-UIS

BCGSoft

Es gibt viele sein können, können Sie für "MFC UI-Elemente" suchen, Bibliothek usw. habe ich Prof-UIS Weg zurück in 2003-4 verwendet Sie sind gut.

+0

welche Bibliotheken wären das? – bastibe

+0

Ich habe meinen Beitrag aktualisiert. –

+0

danke für diesen Ratschlag – bastibe

Verwandte Themen