software que programas para guide ejemplos desarrollo con clase winapi qt mfc

winapi - que - ¿Dónde es un buen lugar para comenzar a programar GUI para Windows?



winapi c++ pdf (9)

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 usar? especializarse en, para estar listo para el futuro y robusto?


Como ya está familiarizado con C y C ++, le recomendaría aprender a escribir una aplicación sencilla de Windows GUI 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 se desarrolla en C ++ para 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 todavía 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 ++.


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

Hay dos partes principales para desarrollar cualquier aplicación GUI: el idioma 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 usar 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 y algunas 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, necesita comprender qué es la bomba de mensajes y cómo funciona. Necesita conocer conceptos tales 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 GUI de .NET, pero he leído en algunos lugares que Managed C ++ en realidad no estaba destinado a ser usado 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.

Entonces, si va a usar .NET, actualmente tiene la opción de elegir 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 eliges esta ruta, sin dudas tendrás que aprender XAML , que es un lenguaje de marcado que maneja las aplicaciones de 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 books de quality sobre el topic .

Entonces, 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 aplicaciones 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 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 eso ayude. Buena suerte :)



Mi primera experiencia escribiendo aplicaciones simples de GUI 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.


No sé si lo llamaría un buen lugar para comenzar, pero si quiere estar listo para el futuro, eche un vistazo a la base de presentación de Windows que está construida exclusivamente con el propósito de programar GUI para Windows


Nunca bajaría por Silverlight, Flash / Flex o cualquier otra 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.



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 conocimientos de Win32 de fondo (por ejemplo, Petzold ) ya que el framework de 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.


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

Aquí hay algunos videos de inicio rápido Link

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