Los argumentos estándar son:
Entonces, ¿Cuál es el framework correcto?... Para principiantes, aquellas personas que simplemente están aprendiendo a programar, creo que deberían trabajar con la API hasta que estén a gusto con la manera en que funcionan las aplicaciones y comprendan todos los mecanismos básicos que hay detrás de cosas como el Loop de Mensajes, GDI, Controles y quizás aún mutlithreading y sockets. De esta forma comprenderán los cimientos de todas las aplicaciones en Windows y podrán aplicar este conocimiento común a MFC, Visual Basic o cualquier otro framework que no sporte todo lo que la API hace, simplemente porque dicho framework ya hace una gran cantidad de cosas y no puede soportar todas esas pequeñas cosas que nadie usa. Entonces, cuando necesites usar esas cosas, es ahí dinde puedes agregarlas tu mismo utilizando tus conocimiento sobre la API.
¿Pero la MFC no es mas fácil? En cierta forma, es mas fácil cuando muchas tareas comunes son realizadas por uno mismo, reduciendo la cantidad de código que realmente necesitamos tipear. Sin embargo, menos código no significa "mas fácil" cuando no entendemos el código que necesitamos escribir, o cuando no entendemos cómo funciona dicho código. Generalmente los principiantes que utilizan los wizards para comenzar sus aplicaciones, no tienen idea que hace la mayoría del código que se ha generado y pierden una gran parte del tiempo intentando darse cuenta donde agregar cosas o que cambios deben hacer para para alcanzar un cierto resultado. Si comienzas a escribir tus programas desde cero, ya sea utilizando la API o MFC, entonces comprenderás todo lo que está puesto allí ya que fué puesto por vos mismo y solo usarás las cosas que entiendes como funcionan.
Otro factor importante es que la mayoría de las personas que están aprendiendo por primera vez la API Win32, no tienen una fuerte base en C++. Intentar comprender la programación en Windows utilizando la MFC y aprender C++ al mismo tiempo puede ser una tarea monumental. Si bien no es imposible, estará lejos de ser mas productivo que hacerlo teniendo conocimientos sobre C++ y la API.
Sin embargo, y esto es importante... si quieres trabajar con la MFC sin entender la API y luego buscas ayuda por algo y la respuesta que obtienes hace referencia a la API (como por ejemplo "Usa el HDC provisto en el mensaje WM_CTLCOLORSTATIC"), seguramente quedes colgado ya que no entiendes como traducir un objeto de la API a uno de la MFC. En ese momento estarás en problemas y las personas se frustrarán contigo por no aprender todo aquello que necesitas de la API antes de intentar usar la MFC.
Personalmente prefiero trabajar con la API, solo me parece mejor. Pero si tengo que escribir una terminal para una base de datos o un host para un conjunto de controles ActiveX, consideraría seriamente usar la MFC ya que podría eliminarme una gran cantidad de código que, en otro caso, debería reinventar.
Versión en Español: Federico Pizarro - 2003