2009-01-28 8 views
23

Estoy decidiendo cómo desarrollar una GUI para un pequeño proyecto de api C++/win32 (trabajando Visual Studio C++ 2008). El proyecto solo necesitará unos pocos componentes para comenzar el proceso principal, por lo que será muy liviano (solo 1 botón y un cuadro de texto ...). Mi pregunta es la siguiente:¿Cómo creo una GUI para una aplicación de Windows usando C++?

No tengo experiencia en el desarrollo de GUI en Windows pero puedo aprender fácilmente. Entonces, ¿qué debería usar? Un editor visual (generación de código de arrastrar y soltar: mi preferencia para el diseño de GUI de escritorio por mucho (java/swing)). ¿O debería usar una biblioteca específica? De cualquier manera, ¿QUÉ biblioteca o editor visual debo usar? Escuché que alguien menciona escribir la GUI en C#, y luego llamar al código C++ ... la cosa es que esta es una GUI tan simple que me resultaría más fácil guardar todo en C++, pero estoy abierto a lo que sea la mejor sugerencia es

Respuesta

12

Si estás haciendo una interfaz gráfica de usuario muy simple y ya está utilizando Visual Studio, entonces puede tiene sentido simplemente ir con MFC. Puede usar el asistente de Visual Studio MFC para crear una aplicación basada en diálogo, soltar dos controles y listo.

MFC está fechado y tiene su parte justa de molestias, pero ciertamente hará el trabajo por usted si solo está hablando de un botón y un cuadro de texto. No tengo ninguna experiencia con Qt, así que no puedo comparar los dos.

15

de lejos, la mejor biblioteca de C++ GUI que existe es Qt, es completa, fácil de aprender, muy rápida y multiplataforma.

ah, que recientemente obtuvo una licencia LGPL, por lo que ahora se puede descargar de forma gratuita e incluir en los programas comerciales

+0

v4.5 tendrá licencia LGPL, pero aún no se ha lanzado. – sth

+1

El principal beneficio de QT es que es multiplataforma. Puede que no piense que lo necesita ahora, pero espere unos años más y desea viajar ... si se ha ido con QT, se reirá. – jkp

+2

Escribir un código multiplataforma simplemente porque usted podría ejecutar en múltiples plataformas en unos pocos años es una razón terrible para hacerlo. Hay una sobrecarga de desarrollo importante en la escritura de código para más de una plataforma y no debe hacerlo a menos que tenga un caso comercial muy bueno para hacerlo. –

2

Qt de Nokia es definitivamente el camino a seguir. Otra opción es gtk, pero Qt está mejor respaldado y documentado. De cualquier manera, ambos son libres. Y ambos son ampliamente utilizados y bien conocidos por lo que es fácil encontrar respuestas a sus preguntas.

3

Solo crea una nueva aplicación MFC C++. Está integrado, es bastante fácil, y existen miles de ejemplos en el mundo ...

Además, puedes diseñar tu cuadro de diálogo directamente en Visual Studio, darles nombres de variables y generar el 90% del código para ti .

2

Para una aplicación tan simple, incluso MFC sería excesivo. Si no desea introducir otra dependencia, solo hágalo en Win32. Será más fácil para usted si nunca ha usado MFC.

Consulte el clásico "Programación de Windows" de Charles Petzold o algún tutorial en línea (por ejemplo, http://www.winprog.org/tutorial/) y ya está listo.

1

Si quieres aprender sobre win32, WTL http://wtl.sourceforge.net/ es el equivalente bastante ligero de MFC, pero debes amar la plantilla para usarlo.

Si desea algo simple, MFC ya está integrado con VS, también tiene una gran base de código adicional y soluciones provisionales de errores conocidos en la red.

También Qt es realmente un gran marco, tiene un buen conjunto de herramientas, editor de diálogo, temas y un montón de otras cosas, además tu aplicación estará lista para ser multiplataforma, aunque requerirá un tiempo para acostumbrarte. .

También tiene Gtk, wxWindow, y no tendrá problemas si ya lo ha usado en Linux.

7

Prefiero simplemente usar Microsoft Visual Studio y escribir una aplicación Win32 nativa.

Para una GUI tan simple como la que describes, puedes simplemente crear un Dialog Box y usarlo como la ventana principal de tu aplicación. La aplicación predeterminada creada por el asistente de Proyecto Win32 en Visual Studio en realidad aparece una ventana, por lo que puede replace esa ventana con su cuadro de diálogo y reemplazar el WndProc con un DialogProc similar (pero más simple).

La pregunta, entonces, es una de las herramientas y el costo. El Express Edition de Visual C++ hace todo lo que desea excepto crear realmente el recurso de plantilla de diálogo. Para esto, puede codificarlo en RC file by hand o in memory by hand. Pregunta SO relacionada: Windows API Dialogs without using resource files.

O puede probar uno de los free resource editors que otros han recomendado.

Finalmente, el Visual Studio 2008 Standard Edition es una opción más costosa pero le ofrece un editor de recursos integrado.

3

Recomiendo enfáticamente que no se use Win32 simple porque es bastante difícil hacerlo funcionar bien en todas las situaciones, es un trabajo aburrido y aburrido y la biblioteca de Common Controls no es que completa. Además, la mayor parte del trabajo se ha hecho por usted.

Cada vez que termino haciendo simple Win32 tengo que pasar al menos un par de horas en las tareas más triviales porque tengo que buscar todos los parámetros, banderas, funciones, macros y averiguar cómo conectarlos correctamente. En general, preferiría una simple solución de arrastrar y soltar, don't-make-me-use-my-brains, y simplemente conectarla en 2 minutos.

Como un kit de herramientas liviano sugeriría omgui que tiene una API limpia y bonita. Sin embargo, no viene con ninguna herramienta.

Si necesita soporte de herramientas, probablemente terminará queriendo ir a MFC (editor de recursos integrado en Visual Studio) o Qt. No sé si wxWidgets tiene alguna herramienta, pero supongo que sí.

Editar: David Citron menciona que aparentemente el editor de recursos en Visual Studio genera archivos de recursos compatibles con Win32, por lo que esa es probablemente la forma preferida de hacer las cosas si quiere mantener las cosas simples.

+1

El editor de recursos integrado en VS genera recursos compatibles con Win32 antiguo. –

+0

¿Lo hace? Ahora dime: - /, eso probablemente habría salvado varios años de mi vida. –

0

Una simple "ventana" con algo de texto y un botón es solo un MessageBox. Puede crearlos con una sola llamada de función; no necesitas ninguna biblioteca en absoluto.

3

Evitar QT (para noobs) o cualquier bibliotecas inútiles (absurdo que un tal cosa básica)

sólo tiene que utilizar el, anuncio la caja de botones y el texto Asistente VS API Win32 ... y eso es todo!

¡En 25 segundos!

+5

donde puedo encontrar este asistente de api win32? – Zombies

0

He usado wxWidgets para proyectos pequeños y me encantó. Qt es otra buena opción, pero para uso comercial probablemente necesitarías comprar una licencia. Si escribe en C++, no use Win32 API, ya que terminará haciéndolo orientado a objetos. Esto no es fácil y toma mucho tiempo. Además Win32 API tiene demasiadas macros y se siente complicado por lo que ofrece.

Cuestiones relacionadas