2008-08-07 18 views
21

Tengo experiencia escribiendo aplicaciones de cliente/servidor de consola y red en C y C++, pero no sé casi nada sobre el uso de la API visual win32, MFC, Qt, wxWidgets, etc. ¿Dónde es un buen lugar para comenzar y qué método ¿Debería especializarme para estar listo para el futuro y ser robusto?¿Dónde es un buen lugar para comenzar a programar GUI para Windows?

Respuesta

43

Esta es una pregunta bastante amplia, ya que las aplicaciones de GUI de programación en Windows se pueden realizar de muchas maneras.

Hay dos partes principales en el desarrollo de cualquier aplicación GUI: el lenguaje y la API/marco. Teniendo en cuenta que está interesado en aprender a construir aplicaciones de Windows GUI, el idioma no es realmente un punto de enfoque para usted. Por lo tanto, debe elegir un idioma que ya conozca y trabajar con un marco o API que pueda ser aprovechado por su idioma elegido.

Si desea utilizar C, está bastante restringido a tratar con la API Win32 usted mismo, en cuyo caso leer Petzold o Richter sería un buen lugar para comenzar. La API de Win32 puede ser bastante desalentadora, pero vale la pena el esfuerzo de aprender (imho). Hay muchos tutoriales en Win32 en la web, y siempre hay MSDN, con una referencia/guía completa de la API de Win32. Asegúrese de cubrir no solo la API, sino otras áreas, como recursos/cuadros de diálogo, ya que son elementos básicos para su aplicación Win32.

Si desea usar C++, tiene todas las opciones que tiene cuando usa C, entre otras. Recomiendo ir directamente con la API de Win32 y luego pasar a un marco conocido como MFC, Qt, wxWindows o GTK para que pueda dedicar menos tiempo a trabajar con código repetitivo y, en su lugar, centrarse en escribir la lógica de la aplicación. Las últimas 3 opciones que acabo de enumerar tienen el beneficio adicional de ser multiplataforma, por lo que no debe preocuparse demasiado por problemas específicos de la plataforma. Dado que dijiste que querías trabajar con Windows, asumiré que estás interesado en enfocarte en eso en lugar de la plataforma cruzada, así que ve con MFC, pero pasa un tiempo con la API de Win32 primero para familiarizarte con algunos de los conceptos.

Al tratar con MFC y la API de Win32, es una buena idea tratar de obtener una comprensión sólida de la terminología antes de escribir el código. Por ejemplo, debe comprender qué es message pump y cómo funciona. Necesita conocer conceptos como "controles owner-drawn" y subclassing. Cuando comprenda estas cosas (y más), le resultará más fácil trabajar con MFC porque utiliza una terminología similar en sus interfaces de clase (por ejemplo, necesita saber qué significa "traducir mensajes" antes de poder entender cómo y cuándo use PreTranslateMessage).

También podría usar Managed C++ para escribir aplicaciones de interfaz gráfica de usuario .NET, pero he leído en algunos lugares que Managed C++ en realidad no estaba destinado a ser utilizado de esta manera. En su lugar, debe utilizarse como una puerta de enlace entre el código nativo/no administrado y el código administrado. Si usa .NET, es mejor usar un lenguaje .NET como VB.NET o C# para compilar sus GUI.

Así que si son va a utilizar .NET, que actualmente tiene la opción de la biblioteca WinForms, o WPF. Personalmente, creo que perderás el tiempo aprendiendo a construir aplicaciones WinForms dado que WPF está diseñado para reemplazarlo. Con el tiempo, WPF se volverá más frecuente y las formas de Win probablemente morirán. WPF tiene un conjunto de API mucho más rico y no sufre de muchas de las limitaciones que tiene Winforms. Sin embargo, si elige esta ruta, sin duda tendrá que aprender XAML, que es un lenguaje de marcado que maneja las aplicaciones WPF. Esta tecnología está llegando a la mayoría de edad, y hay muchos buenos lugares para aprender sobre ella. En primer lugar, hay sitios como LearnWPF y DrWPF que tienen algunos artículos realmente geniales. En segundo lugar, hay plenty de qualitybooks en el topic.

Por lo tanto, para resumir, una vez que haya elegido su idioma y tecnología, el camino es bastante fácil. Simplemente tome uno o dos libros, lea algunos blogs, ingrese algunas muestras de códigos ... y lo más importante ... escriba el código. Sigue escribiendo, sigue cometiendo errores y sigue aprendiendo de ellos.

Como nota final ...

En otras palabras, Silverlight. Si no desea ir a la ruta MS, puede darle a Adobe Flash/Flex un vistazo. Tanto Silverlight como Flash/Flex construyen RIA. Creo que es hacia donde nos dirigimos. Los días de Office como las aplicaciones están numeradas

No estoy de acuerdo en absoluto. Silverlight no es lo mismo que WPF. Silverlight es específico de la web y solo tiene un subconjunto de características de WPF. Dado que la pregunta es acerca de las aplicaciones de Windows GUI, las aplicaciones de Internet Flash/Flex Rich no son una sugerencia adecuada. Tampoco estoy de acuerdo en que los días de Rich Client Applications (como la oficina) estén numerados.

Espero que ayude. Buena suerte :)

+2

Si desea utilizar la API Win32 de C++, también hay WTL. Ver http://wtl.sourceforge.net/ –

+0

+1 para Petzold y Ritcher. –

6

No sé si lo llamaría un buen lugar para empezar, pero si quieres estar preparado para el futuro, echar un vistazo a la windows presentation foundation que está construido en su totalidad con el propósito de la programación GUI para Windows

4

Mi primera experiencia escribiendo aplicaciones GUI simples para Windows fue con C# y Visual Studio. La interfaz de creación de GUI es una simple operación de arrastrar y soltar que genera métodos de esqueleto basados ​​en posibles acciones del usuario. Solo hice una programación bastante básica con esto, pero me imagino que sería un excelente lugar para comenzar a aprender los conceptos básicos y extenderse a las capacidades más avanzadas sobre la marcha.

0

Para aplicaciones comerciales, Windows Forms es muy maduro. Proporciona un camino suave desde la autogeneración para que permita el control fino y el propio. Hay toneladas de controles de terceros de alta calidad y un gran conjunto de ejemplos, documentos, etc. por ahí. Es difícil encontrar un problema que alguien más no haya resuelto. Recomiendo adquirir algunos conocimientos de Win32 de fondo (por ejemplo, Petzold) ya que el framework WinForms se basa en él.

No tengo experiencia en WPF, pero de las aplicaciones de muestra que he visto parece una buena opción para aplicaciones cuyas interfaces se beneficiarían de más metáforas gráficas. Entonces, si está haciendo una aplicación de banca, probablemente no valga la pena la sobrecarga de diseño adicional. Pero si lo hace, por ejemplo, una aplicación de administración de almacenes, podría mejorarse colocando bonitas cajas en bonitos compartimentos.

@StephenCox: respuesta incorrecta a la pregunta incorrecta. OP pregunta por las aplicaciones de cliente de escritorio y, además, ¡WPF! = Silverlight.

0

Para un punto de partida simple para familiarizarse con la naturaleza "impulsada por eventos" básicamente todos los marcos se crean alrededor de FLTK.

Éstos son algunos videos de partida rápidas Link

para uso profesional me gustaría recomendar Qt, caro, pero a menudo vale la pena en situaciones comerciales.

0

Dado que ya está familiarizado con C y C++, le recomendaría aprender a escribir una aplicación de Windows GUI simple utilizando el libro de Charles Petzold. Le dará la comprensión fundamental de cómo funciona Windows. Es bueno entender que la mayoría de todo lo que ves es una ventana (un botón es una ventana, por ejemplo) y que estas ventanas responden a los mensajes. Sin embargo, no pasaría mucho tiempo con esto y no es necesario que haga esto primero si va a elegir WPF. Solo creo que es bueno tener una comprensión básica de esto.

Hubo un buen podcast recientemente en .Net Rocks llamado "Kate Gregory Develops in C++ for Vista!" allí recomienda que alguien que comienza ahora no use/aprenda MFC (aunque se haya actualizado recientemente).

En cuanto a prepararse para el futuro, necesita aprender WPF, pero aún no está completo, por lo que dependiendo de los tipos de aplicaciones del lado del cliente que desee crear, probablemente necesite aprender WinForms. La mayoría de las personas aún no usa WPF, por lo que es un buen momento para comenzar a aprender. Creo que le será más fácil usar C# para aprenderlo en lugar de hacer código administrado con C++.

1

Nunca iría por el Silverlight, Flash/Flex o cualquier ruta similar. Se ve bien, pero el problema principal es que el código del motor que lo ejecuta está completamente cerrado y controlado por una sola compañía. Tomemos, por ejemplo, las versiones de 64 bits de ambos. Si surge una nueva plataforma, no podrá migrar su código existente a ella.

+1

La caja cerrada y una sola compañía no son problemas en absoluto. Independientemente de la caja en la que trabaje, aún corre el riesgo de no poder portar su código allí. El FUD injustificado no es un argumento para evitar Silverlight o Flash. –

3

Hay un montón de tutoriales Win32 en línea:

http://www.zeusedit.com/forum/viewtopic.php?t=1218

Hay un montón de compiladores para elegir:

http://www.zeusedit.com/forum/viewtopic.php?t=238

También recomendaría conseguir el Borland Win32 SDK documentación en formato de archivo WinHelp:

http://www.zeusedit.com/forum/viewtopic.php?t=7

Solo cubre los principios básicos del Win32, pero cuando se inicia, esto puede ser útil ya que es menos desalentador y menos hinchado que el MSDN.

Cuestiones relacionadas