2009-10-24 11 views
6

Imagínese que usted está en Windows 7 y tiene que escribir una interfaz gráfica de usuario para una aplicación gráfica, (como un editor de terreno, visor de malla ..) que implica un gran uso de DirectX y OpenGL (escrito así en C++ nativo). Si su objetivo es un software multi-plataforma, entonces debería ir para wxWidgets, pero imagina que estás haciendo una única aplicación de Windows' ... ¿cuál sería su elección? ¿y por qué?La elección entre WPF, wxWidgets, API Win32 y MFC

Supongo que la aplicación funcionaría tanto en XP como en Vista/7 y, obviamente, en el caso de WPF se gestionará la interfaz de usuario, pero invocará funciones nativas mediante una clase de proxy C++/CLI ("rebote" de problemas de rendimiento de causas administradas nativas y administradas por el nativo?).

Respuesta

21

RAD Studio También se puede hacer el trabajo

  • mejorada en el 2010! VCL (Visual biblioteca de componentes) para la rápida construcción aplicaciones de Microsoft Windows incluye ahora sin problemas soporte de Windows 7, y agraciado compatibilidad con Windows repliegue Vista, XP y 2000
  • mejorada en el 2010! Windows Vista y encabezados de la API de Windows 7 para aprovechar plenamente las últimas capacidades de Windows
  • ¡Nuevo en 2010!El soporte para Windows 7 API Direct2D

también se puede hacer WPF con Delphi Prism y wxWidgets con twinforms

+1

El OP menciona C++, por lo que también vale la pena señalar que RAD Studio incluye C++ Builder. –

+1

Sí, esa pregunta parece estar pidiendo C++ Builder y VCL. OpenGL es compatible desde el primer momento, y las librerías DirectX para C++ Builder se pueden encontrar en www.clootie.ru. –

2

se "rebote" de los problemas de rendimiento logrado causa-nativas y gestionados nativos?

sin duda, pero como se escribe simplemente editor (no es un juego, en general) no es una cosa que debe preocuparse por

aplicaciones WPF prestados por el subsistema de DirectX que sé. entonces, si usa solo DirectX, será una buena opción.

7

En WPF, puede utilizar DirectX Shaders para aplicar efectos sobre objetos de interfaz, (here es un artículo de CodeProject que detalla aspectos de desarrollo) y se espera que la compatibilidad con esto siga creciendo, por lo que elegiría WPF como una plataforma de desarrollo. Además, se enfoca en crear atractivas interfaces de usuario con un esfuerzo razonable, y creo que esto es bastante importante en la construcción de una aplicación orientada a gráficos.

+0

que he tenido experiencias horribles con WPF representación objetos dibujados a medida utilizando la capa visual. La demora es tan notable. Lo mismo vale para Shapes y otros UIElements ... Así que supongo que WPF es realmente genial para las cosas usuales de la GUI, pero cuando se trata de renderizar cosas de alto rendimiento, no hay otra manera que ir a bajo nivel usando interopera ... –

2

me gustaría utilizar personalmente http://sourceforge.net/projects/win32-framework/ para crear aplicaciones basadas en cualquier Windows de C++. De lo contrario, solo usaría VB.Net o C# porque puede fácilmente codificar el puerto entre ambos y el diseñador de formularios es muy útil.

2
 
MFC  :: Just say NO for any kind of project. 
Win32  :: Well, I can not really recommend using it. 
wxWidgets :: I have used it and seen no problem, good choice. 
WPF  :: I have not and never will use it as it is .Net bound. 
FLTK  :: Also look at http://fltk.org/, probably has better OpenGL support. 
+0

WPF/.NET es el La mejor opción para cualquier (nueva) aplicación "Windows". –

+1

@Dan: Menciona que llamará un montón de código C++ nativo, gracias por el voto negativo :-) – Malkocoglu

+3

@Dan - esto simplemente está mal. WPF no es la mejor opción para * cualquier nueva * aplicación de Windows. –

1

Realmente no puedo comentar sobre wxWidgets, pero WPF es muy superior a MFC y al viejo API de Win32. WPF usa DirectX para renderizar y hay algunos 3D support in WPF. Lamentablemente, este apoyo sigue siendo algo rudimentario y no el más eficiente. En realidad se puede obtener un mejor rendimiento 3D si aloja un control de Windows Forms que hace OpenGL (al menos que tuvimos que hacer que en un proyecto reciente que trabajé). Si desea hacer renderizado 3D en una aplicación WPF, puede echar un vistazo a XNA Framework. La próxima versión del .NET Framework también incluirá mejoras para WPF y estoy seguro de que habrá un mejor soporte para 3D.

12

Si se siente cómodo con sus habilidades de C++, recomiendo WTL. Es muy liviano y da como resultado un código de máquina delgada. La versión de Windows de Google Chrome was written with WTL.

+2

no estoy seguro de por qué fue votado, es una respuesta legítima que no fue sugerida. +1 –

7

Se podría considerar el uso de Qt, aunque sea por un sólo para Windows aplicación, simplemente porque el Qt C++ API es tan bien hecho. Qt supports OpenGL y se puede usar junto con DirectX.

+0

¿QT usa Direct2D y DirectWrite? – Royi

9

Para minimizar el tiempo de desarrollo y maximizar el rendimiento Definitivamente iré con Delphi 2010 (Rad Studio 2010). Obtiene la ejecución nativa, las interfaces directas con Windows 7 Direct2D API y posiblemente uno de los mejores entornos IDE/Desarrollo disponibles en Windows 7. ¿Qué más quiere?

Larry Drew TheSoftwareRonin

2

Asegúrese de revisar la Biblioteca Digital Mundial ("cortar") por el equipo Cockos (encabezada por Justin Frankel de Nullsoft/Winamp fama).

Es una biblioteca C++ extremadamente liviana que incluye "WDL Virtual Window system".

Personalmente no lo he usado, pero puedo responder por el buen software que se ha creado con él. Aplicaciones extremadamente eficientes y livianas.

Enlace: WDL

Cuestiones relacionadas