windows - portable - tag files
Prerrequisitos para aprender la programación MFC (2)
Sé un poco de C ++ y C y el proyecto con el que estoy trabajando ahora es un montón de programación MFC. ¿Puede alguien con experiencia decirme los requisitos previos para aprender MFC?
Además, ¿cuáles son las mejores fuentes para aprender?
¿Algún libro o serie de videos en particular?
Sé que la pregunta es demasiado general, pero las respuestas pueden ayudarme mucho (o a cualquier otra persona que esté investigando MFC)
¡Gracias!
+1 buena pregunta!
tl;dr : Learn Win32 - en ese orden.
Por 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 Win32 ). También deberá familiarizarse con algunos conceptos clave de C ++ y familiarizarse con las herramientas. Mi lista propuesta de requisitos previos sería:
- Obtenga una sólida formación en el desarrollo de la API de Windows.
- Familiarízate con los conceptos relevantes de C ++.
- 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 en C. Como consecuencia, la gestión de recursos suele ser un código de placa de caldera tedioso. Y visible en el código fuente (a veces una ventaja increíble al leer el código). MFC es, en gran medida, una envoltura de administración de recursos automatizada (y una biblioteca de utilidades) alrededor de la API de Windows, que oculta la mayor parte de la administración de recursos y las conversiones de tipos. Para ser fluido en MFC tienes que entender lo que esconde.
Para comenzar con la API de Windows y todo lo que necesita es un resumen rápido de los componentes principales, recomendaría el Tutorial de la API Win32 de Forger (por forgey of #winprog fame). Abarca el manejo de mensajes , la ventana , los controles y el GDI , y crea 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 el Windows de programación de Charles Petzold (no debe confundirse con el Petzold administrado ). MSDN también es un buen recurso para obtener una descripción general y documentación detallada para áreas específicas como:
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á demasiados negocios extravagantes allí. Muy poco código de plantilla y ciertamente ninguna de las nuevas características de C ++ 11. La intimidad con los conceptos básicos de C ++ te llevará lejos.
Como se mencionó anteriormente, MFC es en gran medida una envoltura de administración de recursos en torno a la API de Windows. A menudo, existe una asignación directa entre los recursos API de Windows y los objetos MFC (como HWND
: CWnd
o HDC
: CDC
). Si entiendes los constructores, los destructores y la vida útil de los objetos, estás prácticamente configurado en ese departamento.
Cuando utilice los contenedores basados en plantillas de MFC (como CMap
), estará expuesto a las plantillas, naturalmente. No hay nada demasiado involucrado allí, solo una parametrización de tipo muy básica para reutilizar el código del contenedor y habilitar el acceso a elementos de tipo seguro. Una introducción a los contenedores MFC se puede encontrar aquí: Collections .
Las excepciones se utilizan raramente en MFC, principalmente cuando se accede a archivos o al serializar datos. Aún debe saber cómo escribir código de excepción segura; Verás excepciones en aplicaciones no triviales. Puede encontrar una descripción general en Manejo de excepciones en MFC .
Un área que no es realmente parte de C ++ pero 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 sintaxis del preprocesador como el funcionamiento del preprocesador.
3. Herramientas:
Si bien es posible escribir aplicaciones MFC solo con el Bloc de notas, ciertamente no es muy eficiente hacerlo. Un editor de texto sin formato puede ser una buena idea para aprender la plataforma, pero cuando llegue el momento de cumplir los hitos y los plazos, seguramente querrá utilizar un IDE potente.
MFC prácticamente implica el uso de Visual Studio y asumiré que eso es lo que estás usando. Si está utilizando VS6 o VS2010 (o posterior), tendrá acceso al Asistente de clases de MFC . Esta es una herramienta que utilizará con frecuencia. Para operarlo de manera segura debes familiarizarte con el código que genera para ti. Juegue con él, inspeccione el código generado e intente construir un modelo mental de él. Si aún no tiene sentido, deberías volver más tarde.
El asistente de clase MFC generará casi seguramente un código de preprocesador. Oculta una complejidad tremenda que debe comprender para utilizarla de forma segura. Use el IDE para navegar a través de las macros del preprocesador, intente expandirlas en su mente y ver si entiende el código resultante. Si tiene dificultades para desentrañar las invocaciones de macros, el compilador genera el código preprocesado utilizando la opción del compilador / P (Preproceso a un archivo) .
Ocasionalmente, debe buscar o depurar el código fuente de MFC. Para que el código fuente esté disponible para la navegación de origen y el depurador, debe configurar los Directorios de VC ++ para que incluyan lo siguiente (si no está ya 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.
Búsqueda de ayuda: Si bien MSDN es el mejor recurso para la documentación, la sección 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 la documentación de MFC sin buscar, consulte la documentación de la API de Windows correspondiente, 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 la Programación de Windows de Jeff Prosise con MFC . Aunque está fechado (publicado en 1999), los conceptos siguen siendo válidos hoy. Proporciona una visión general de los conceptos de MFC y profundiza en los detalles de la implementación. Si se encuentra luchando con el código generado (preprocesador), este libro es para usted.
Como un recurso valioso en línea, MSDN ofrece información sobre casi cualquier aspecto del desarrollo de MFC. Los conceptos principales incluyen:
- Manejo y mapeo de mensajes
- Elementos de la interfaz de usuario
- Serialización en MFC
Una lista completa se puede encontrar en Concepts .
El prerrequisito más importante para aprender MFC es C ++, seguido por un entendimiento de cómo funciona Windows.
Mi libro favorito de MFC es Inside Visual C ++ de David Kruglinski, quien murió demasiado pronto. 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. (Programación de Windows por Charles Petzold).