Лучший ответ на ваш вопрос может зависеть от многих вещей.
Я разрабатывал приложения для платформы Microsoft Windows в течение почти двадцати лет, и я использовал все, от простого API Windows, Turbo Pascal, MFC, Borland C ++ builder и Visual Basic.
Я перепробовал много кроссплатформенных наборов инструментов, в том числе wxWidgets и QT, и они, безусловно, имеют свое место и являются отличными вариантами для создания приложений, которые будут работать не только на Windows.
В общем, если вы ТОЛЬКО хотите ориентироваться на платформу Windows (несмотря на Mono Project ), IMHO, использование языка C # для нацеливания на платформу .NET с Visual Studio, вероятно, является самым простым и полным. специальная среда, которую вы найдете сегодня для создания приложений Windows.
Вы получаете отличный набор инструментов и обширную документацию, и, возможно, самое главное, очень большую базу опытных программистов, на которую можно опираться при возникновении вопросов.
.NET также поддерживает C ++ и ряд других языков для удовлетворения ваших потребностей. Если вам нужен низкоуровневый доступ к Win32 API, вы можете получить доступ к API напрямую, используя pinvoke. Если вам нужен еще более низкий уровень контроля, вы можете ссылаться на управляемые или неуправляемые библиотеки DLL из своего приложения .NET.