Cómo debo empezar una GUI de programación en C++ para Windows?

En primer lugar, ¿cómo de bien conoces C++? Si vienes a C++ desde un lenguaje gestionado o un lenguaje de scripting, yo dedicaría unos meses a centrarme sólo en el lenguaje.

En segundo lugar, bajo ningún concepto empezaría un nuevo proyecto MFC en tiempos modernos. Nunca fui un fanático de MFC. Incluso en su época de esplendor prefería directamente Win32 a MFC. Ahora, quiero decir, es una reliquia que es mejor dejar en el olvido.

Ahora, en igualdad de condiciones, aprendería Qt. Descarga la edición de código abierto de Qt junto con QtCreator. Usa QtCreator como tu IDE*. Lee algo de la documentación de QtCreator. Consigue que funcione una de las aplicaciones de ejemplo enlazadas en la documentación de QtCreator – asegurándote de que es un ejemplo normal de «Qt Widgets», no de Qt Quick y que no implique QML.

En ese punto estás prácticamente solo. Comprar un libro, o averiguar una manera de avanzar a través de lo que se puede encontrar en línea. Una cosa que hay que tener en cuenta es que Qt es una librería antigua de gran tamaño. Cuando busques material de aprendizaje para grandes bibliotecas antiguas -en línea o impreso- asegúrate siempre de que lo que acabas leyendo, experimentando, etc., se dirige a una versión relativamente moderna de la biblioteca.

La otra ruta para desarrollar una aplicación de escritorio de Windows en C++ sería empezar aprendiendo la API de Win32 e ir desde ahí. Win32 es una API de C anterior a C++; es la base de toda la programación de Windows. Qt en Windows y los dos marcos GUI de Microsoft, por ejemplo, están escritos sobre Win32. Por esta razón, incluso si terminas usando Qt, u otro framework GUI multiplataforma de terceros, como tu marco de desarrollo principal, es beneficioso aprender al menos los fundamentos de la API de Win32, si te tomas en serio la programación de Windows.

De todos modos, la mejor manera de aprender Win32 es leer el libro de Charles Petzold Programming Windows, Fifth Edition, exactamente esta edición – 5ª edición, no 6ª: quieres que siga siendo sobre Win32. Una vez que conozcas bien la API de C, es posible escribir una aplicación para Windows en C++ envolviendo Win32 con C++ tú mismo, según las necesidades de tu aplicación. No estoy recomendando esto para un principiante pero es una opción válida para ciertos tipos de aplicaciones

* — esta respuesta es antigua. El soporte directo de Qt en Visual Studio ha avanzado mucho. Yo recomendaría ahora usar la extensión «Qt Visual Studio Tools» en lugar de QtCreator, a menos que te preocupes por la multiplicidad de plataformas y quieras usar QtCreator en todas las plataformas que soportas.