¿Dónde es un buen lugar para comenzar a programar GUI para Windows? [cerrado]


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

Author: kassak, 2008-08-07

9 answers

Esta es una pregunta bastante amplia, ya que la programación de aplicaciones GUI en Windows se puede hacer de muchas maneras.

Hay dos partes principales para desarrollar cualquier aplicación GUI: el lenguaje y la API/framework . Teniendo en cuenta que está interesado en aprender a construir aplicaciones GUI de Windows, 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 el idioma elegido.

Si si desea utilizar C, está prácticamente restringido a tratar con la API Win32 usted mismo, en cuyo caso leer Petzold o Richter sería un gran lugar para comenzar. La API de Win32 puede ser bastante desalentadora, pero vale la pena el esfuerzo de aprender (imho). Hay muchos tutoriales sobre 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 / diálogos tal como son bloques de construcción para su aplicación Win32.

Si desea usar C++, tiene todas las opciones que tiene al usar C más algunas otras. Recomiendo ir con la API Win32 directamente, y luego pasar a un marco conocido como MFC, Qt, wxWindows o GTK para que pueda pasar menos tiempo trabajando con código repetitivo y en su lugar centrarse en escribir la lógica de su aplicación. Las últimas 3 opciones que acabo de enumerar tienen el beneficio adicional de ser multiplataforma, por lo que no tiene que preocuparse demasiado sobre temas 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 multiplataforma so así que ve con MFC, pero pasa algo de tiempo con la API de Win32 primero para familiarizarte con algunos de los conceptos.

Cuando se trata de MFC y la API Win32, es una buena idea tratar de obtener una comprensión sólida de la terminología antes de escribir código. Por ejemplo, debe comprender qué es la bomba de mensajes y cómo funciona. Necesita conocer conceptos como" controles dibujados por el propietario", y subclase. Cuando entiendes estas cosas (y más), te resultará más fácil trabajar con MFC porque utiliza 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 usar PreTranslateMessage).

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

Así que si esva a usar.NET, actualmente tiene la opción de la biblioteca WinForms, o WPF. Personalmente siento que estaría perdiendo el tiempo aprendiendo a construir aplicaciones WinForms dado que WPF es diseñado para reemplazarlo. Con el tiempo WPF se volverá más prevelant y Winforms muy probablemente morirá. WPF tiene un conjunto de API mucho más rico, y no sufre muchas de las limitaciones que Winforms tiene. Sin embargo, si elige esta ruta, sin duda tendrá que aprender XAML, que es un lenguaje de marcado que impulsa las aplicaciones WPF. Esta tecnología está llegando a la mayoría de edad, y hay muchos lugares excelentes para aprender sobre ella. Primero, hay sitios como LearnWPF , y DrWPF que tienen algunos artículos realmente geniales. En segundo lugar, hay un montón de calidad libros en el tema.

Así que, para resumir, una vez que haya elegido su idioma y tecnología, el camino es en realidad bastante fácil. Sólo tienes que recoger un libro o dos, leer algunos blogs, entrar en algunas muestras de código.. y lo más importante ... escribe código. Sigue escribiendo, sigue cometiendo errores y sigue aprendiendo de ellos.

Como nota final...

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

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 las características de WPF. Dado que la pregunta pide aplicaciones GUI de Windows, las aplicaciones de Internet ricas de Flash/Flex no son realmente una sugerencia adecuada. Tampoco estoy de acuerdo en que los días de las Aplicaciones Cliente Ricas (como office) estén contados.

Espero que eso ayude. Buena suerte :)

 44
Author: OJ.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-07 11:24:54

No se si lo llamaría un buen lugar para comenzar, pero si quieres estar listo para el futuro, echa un vistazo a la windows presentation foundation que está construida enteramente con el propósito de programar GUI para windows

 6
Author: lomaxx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-07 03:08:35

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

 4
Author: Justin Bennett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-07 03:47:41

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

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

Hay muchos compiladores para elegir:

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

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

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

Solo cubre lo básico de Win32, pero al comenzar, esto puede ser útil, ya que es menos desalentador y menos hinchado que el MSDN.

 3
Author: jussij,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-27 23:20:25

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

 1
Author: Milan Babuškov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-18 10:13:59

Para aplicaciones de negocios, Windows Forms es muy maduro. Proporciona un camino suave desde la generación automática de mucho para usted hasta permitir un control de grano fino y rodar el suyo propio. Hay toneladas de controles de terceros de alta calidad y un gran cuerpo de ejemplos, documentos, etc por ahí. Es difícil toparse con un problema que alguien más no ha resuelto. Recomiendo adquirir algunos conocimientos de fondo de Win32 (por ejemplo, Petzold) ya que el marco de trabajo de WinForms vive encima de él.

No tengo Experiencia WPF, pero de las aplicaciones de muestra que he visto parece una buena opción para aplicaciones cuyas interfaces se beneficiarían de metáforas más gráficas. Así que si estás haciendo una aplicación bancaria, probablemente no vale la pena la sobrecarga de diseño adicional. Pero si usted está haciendo, por ejemplo, una aplicación de gestión de almacén que podría ser mejorado por dejar caer cajas bonitas en contenedores bonitos.

@StephenCox: respuesta equivocada a la pregunta equivocada. OP está preguntando acerca de las aplicaciones de cliente de escritorio, y por otra parte, WPF != Silverlight.

 0
Author: Aidan Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-12 12:23:30

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

Aquí hay algunos videos de inicio rápido Enlace

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

 0
Author: epatel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-12 13:26:07

Dado que ya está familiarizado con C y C++, le recomendaría aprender a escribir una simple aplicación GUI de Windows 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 en esto y no necesariamente necesita hacer esto primero si va a elegir WPF. Me solo creo que es bueno tener una comprensión básica de esto.

Hubo un buen podcast recientemente en. Net Rocks llamado "Kate Gregory Se desarrolla en C++ para Vista!" allí recomienda que alguien que comience ahora no use/aprenda MFC (a pesar de que se ha actualizado recientemente).

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

 0
Author: bruceatk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-12 13:59:12

Primero haz bien lo básico. El mejor tutorial que he encontrado es: http://winprog.org/tutorial/start.html

Después de eso, aunque la página de inicio es odiosamente desagradable, las páginas del tutorial son buenas en contenido y estética: http://www.tenouk.com/cplusmfcdotnet.html

Luego, por supuesto, está MSDN.

 0
Author: Nav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-29 08:56:23