2009-08-28 43 views
8

Voy a desarrollar una aplicación en Windows. Nunca lo había hecho antes ;-)WinForms o WPF o Qt para la GUI de Windows con C/C++ como back-end

Necesito hacer algunos cálculos de audio pesados, que tienen que estar escritos en C/C++. Esta parte será un algoritmo de corrección de sala que actualmente tarda unos 10 segundos por canal para ejecutarse en Matlab. Tiene que estar escrito en C/C++, ya que podría ser portado a un DSP más tarde, que tiene que ser programado en C/C++.

Además, necesito una GUI para revisar los cálculos, visualizar los resultados y modificar los parámetros de cálculo. La parte más difícil de esta interfaz gráfica de usuario será una gran cantidad de trazado de espectros, espectrogramas, formas de onda de audio y similares.

Ahora, he oído que WPF está de moda en las GUI de Windows, pero parece estar limitado a C#. ¿Hay una forma simple de integrar mi código C/C++ con algún código GUI de C#? ¿O debería tomar WinForms y simplemente escribir todo en C++? ¿O Qt funcionaría igual de bien y proporcionaría algunas capacidades multiplataforma "gratis"?

Tengo cierta experiencia con C/C++, Matlab y VST-development, pero nunca escribí una aplicación real y, sinceramente, ni siquiera sé por dónde empezar.

¡Gracias de antemano!

+2

Para C++ Qt es la mejor GUI toolkit. – Sharique

Respuesta

6

Creo que la mayor desventaja de utilizar WPF o WinForms es que tendrá que programar en dos lenguajes de programación, lo que supone una gran carga logística.

He visto este tipo de argumento antes: use C o C++ para el nivel bajo, otra cosa para el nivel alto. En este caso, Qt/C++ tiene el mismo nivel que WPF/WinForms, con la ventaja de una integración muy fácil de la IU a su otro código C++.

Para los espectrogramas y otros gráficos echa un vistazo a Qwt.

P.S: WPF no es del todo furioso en Windows, de hecho, el mercado está bastante fragmentado y WPF es uno de los toolkits de GUI menos utilizados. La mayor parte del código utiliza MFC, WTL, Delphi, Win32, etc.

2

WPF lo vinculará a Windows, pero no a ningún idioma en particular. Puede escribir aplicaciones WPF en C#, VB.NET, Managed C++ o cualquier otro lenguaje .NET.

Winforms está relacionado de manera similar con Windows, pero es posible que pueda escribir su aplicación de modo que también se ejecute en Mono y, por lo tanto, es multiplataforma. Sin embargo, Winforms es un conjunto de herramientas mucho menos capaz cuando se trata de visualizaciones complejas.

La interoperabilidad entre .NET y aplicaciones nativas es muy fuerte, pero es seguro que le causará al menos un poco de dolor. Por otro lado, implementar la interfaz en un entorno nativo puede causarle más dolor.

Si está feliz de que su GUI esté vinculada a Windows y .NET, WPF es la mejor opción para aplicaciones altamente visuales. Si no desea una dependencia de .NET o Windows, Qt parece ser su única opción.

3

No tengo experiencia en QT, pero puedo decir que WPF es bueno pero no es tan bueno para aplicaciones intensivas en CPU, además no podrá integrar directamente su c/C++ fácilmente con WPF.

Habrá una gran curva de aprendizaje y tendrá que escribir COM Interfaces para comunicarse con C#/WPF y su código nativo. o CLI de .NET de Visual C++, que es bastante difícil y hay menos tutoriales disponibles.

Pero el problema es que no recibirá ningún buen soporte porque muchas personas solo usan aplicaciones de base de datos C# con WPF/WinForms. La mejor manera de hacerlo es escribir las DLL COM para integrarlas con WPF, pero eso será difícil.

En su lugar, hay varias herramientas disponibles ahora en MFC, y muchas otras bibliotecas comerciales están disponibles también para escribir buena interfaz de usuario en C++ MFC, donde la integración será bastante más fácil ya que eres más familiar con C++.

O bien Qt, si ya lo conoce.

Bibliotecas:

Prof-UIS

BCGSoft

puede haber muchas, puedes buscar por "interfaz de usuario Elementos de MFC", Biblioteca, etc. He utilizado Prof-UIS camino de regreso en 2003-4 ellos son buenos.

+0

¿Qué bibliotecas serían? – bastibe

+0

He actualizado mi publicación. –

+0

gracias por este consejo – bastibe

Cuestiones relacionadas