Requisitos previos para aprender la progtwigción de MFC

Sé un poco de C ++ y C y el proyecto con el que estoy trabajando ahora es una gran cantidad de progtwigción de MFC. ¿Alguien puede decirme los requisitos previos para aprender MFC?

Además, ¿cuáles son las mejores fonts para aprender?

¿Alguna serie de libros o videos en particular?

Sé que la pregunta es muy general, pero las respuestas pueden ayudarme a mí (oa cualquier otra persona que esté investigando en MFC) mucho

¡Gracias!

+1 Buena pregunta!

tl; dr : aprende Win32 – en ese orden.

Con mucho, el requisito previo más importante para MFC es una comprensión sólida de la API de Windows (también conocida como API de Win32 ). También deberá familiarizarse con algunos conceptos clave de C ++ y familiarizarse con las herramientas. Mi lista propuesta de prerrequisitos sería:

  1. Obtenga una sólida base en el desarrollo de API de Windows.
  2. Familiarícese con los conceptos relevantes de C ++.
  3. Aprende las herramientas.

El siguiente es un resumen de estos pasos, con enlaces a información adicional.

1. API de Windows:

La API de Windows expone todos los servicios a través de una interfaz C. Como consecuencia, la gestión de recursos a menudo es un código de placa de caldera tedioso. Y visible en el código fuente (a veces una bonificación increíble al leer el código). MFC es, en gran medida, un contenedor automatizado de administración de recursos (y biblioteca de utilidades) alrededor de la API de Windows, que oculta la mayoría de la gestión de recursos y las conversiones de tipo. Para dominar MFC, debes entender lo que oculta.

Para comenzar con la API de Windows y todo lo que necesita es un resumen rápido de los principales componentes, recomendaría el tutorial API Win32 de Forger (por falsificación de #winprog fama). Cubre el manejo de mensajes , ventanas , controles y el GDI , y construye una base sólida. Si tiene ganas de invertir (bien gastado) tiempo en explorar la API de Windows con más detalle, el mejor recurso hasta la fecha probablemente sea aún el Windows Programming de Charles Petzold (no se debe confundir con la gestión de Petzold ). MSDN es también un buen recurso para obtener una descripción general y documentación detallada para áreas específicas como:

  • Manejo de mensajes
  • Ventana
  • La interacción del usuario
  • Controles de Windows

2. Conceptos clave de C ++:

MFC se implementa en términos de C ++. Si bien es anterior al estándar oficial de C ++, no encontrarás demasiados negocios originales. Muy poco código de plantilla y, desde luego, ninguna de las características nuevas de C ++ 11. La intimidad con los conceptos básicos de C ++ te hará recorrer un largo camino.

Como se mencionó anteriormente, MFC es, en gran medida, un contenedor de administración de recursos alrededor de la API de Windows. A menudo hay una asignación directa entre los recursos de la API de Windows y los objetos MFC (como HWND : CWnd o HDC : CDC ). Si comprende los constructores, los destructores y la duración del objeto, prácticamente está todo configurado en ese departamento.

Al usar contenedores basados ​​en plantillas de MFC (como CMap ), estará expuesto a las plantillas, naturalmente. Aquí no hay nada demasiado complicado, solo una parametrización de tipo muy básica para reutilizar el código de contenedor y habilitar el acceso a elementos de tipo seguro. Puede encontrar una introducción a los contenedores MFC aquí: Colecciones .

Las excepciones rara vez se usan en MFC, principalmente al acceder a archivos o al serializar datos. Aún debe saber cómo escribir código de excepción de seguridad; verá excepciones en aplicaciones no triviales. Se puede encontrar una descripción general en Exception Handling en MFC .

Un área que no es realmente parte de C ++ pero que se usa ampliamente en todo el MFC es el preprocesador. Independientemente de cuán trivial sea su aplicación MFC, habrá macros. Debe comprender muy bien tanto la syntax del preprocesador como el funcionamiento del preprocesador.

3. Herramientas:

Si bien es posible escribir aplicaciones MFC con Notepad solo, ciertamente no es muy eficiente hacerlo. Un editor de texto sin formato puede ser una buena idea para aprender la plataforma, pero cuando llega el momento de cumplir los hitos y los plazos, seguramente querrá usar un IDE potente.

MFC implica el uso de Visual Studio y supongo que eso es lo que estás usando. Si está utilizando VS6 o VS2010 (o posterior), tendrá acceso al asistente de clase de MFC . Esta es una herramienta que usará con frecuencia. Para operarlo con seguridad debes familiarizarte con el código que genera para ti. Juega con él, inspecciona el código generado e intenta construir un modelo mental de él. Si aún no tiene sentido, deberías regresar más tarde.

El asistente de clase MFC casi seguramente generará código de preprocesador. Oculta una tremenda cantidad de complejidad que debe comprender para usar de forma segura. Use el IDE para navegar a través de las macros del preprocesador, intente expandirlas en su mente y vea si comprende el código resultante. Si tiene dificultades para desentrañar las invocaciones de macros, haga que el comstackdor muestre el código preprocesado utilizando la opción del comstackdor / P (Preprocesamiento a un archivo) .

Ocasionalmente, debe buscar o depurar el código fuente de MFC. Para que el código fuente esté disponible para la exploración de fonts y el depurador, debe configurar los directorios de VC ++ para incluir lo siguiente (si no está presente):

 $(VCInstallDir)atlmfc\src\mfc $(VCInstallDir)atlmfc\src\mfcm $(VCInstallDir)atlmfc\src\atl 

Dependiendo del IDE esto se hace a través de Herramientas -> Opciones: Proyectos y Soluciones -> Directorios de VC ++ o la hoja de propiedades de la configuración de su proyecto.

Buscar ayuda: si bien MSDN es el mejor recurso para la documentación, la sección de MFC parece que está en modo de mantenimiento y no recibe tanta atención como la documentación de la API de Windows. Si encuentra que falta la documentación de MFC, busque la documentación respectiva de la API de Windows, por ejemplo CWnd::OnNcDestroy vs. WM_NCDESTROY . Este último contiene información valiosa sobre el orden en que Windows recibe este mensaje.

Aprendiendo MFC

Un recurso integral para aprender MFC es Jeff Prosise ‘ Progtwigción de Windows con MFC . Si bien está fechado (lanzado en 1999), los conceptos siguen siendo válidos en la actualidad. Proporciona una descripción general de los conceptos de MFC y profundiza en los detalles de implementación. Si te encuentras luchando con el código generado (preprocesador), este libro es para ti.

Como un valioso recurso en línea, MSDN ofrece información sobre casi cualquier aspecto del desarrollo de MFC. Los principales conceptos incluyen:

  • Manejo y mapeo de mensajes
  • Elementos de interfaz de usuario
    • Windows
    • Cuadros de diálogo
  • Serialización en MFC

Se puede encontrar una lista completa en Concepts .

El prerrequisito más importante para aprender MFC es C ++, seguido por entender cómo funciona Windows.

Mi libro favorito de MFC es Inside Visual C ++ por David Kruglinski, que murió demasiado temprano. Su última edición cubre MFC con Visual Studio 6, pero los conceptos y la mayoría del contenido siguen siendo válidos.

Para ver cómo funciona Windows, el “Petzold” es el libro. (Progtwigción de Windows por Charles Petzold).