Это зависит от ваших потребностей.
Использование CLR предоставит вам наиболее выразительный набор библиотек (всю платформу .NET) за счет ограничения вашего исполняемого файла необходимостью установки .NET Framework во время выполнения, а также ограничения вас Платформа Windows (однако все 4 перечисленные технологии являются только Windows, поэтому ограничение платформы, вероятно, наименее хлопотно).
Однако CLR требует, чтобы вы использовали расширения C ++ / CLI для языка C ++, поэтому вам, по сути, необходимо изучить некоторые дополнительные языковые возможности, чтобы использовать это. Это дает вам множество дополнительных возможностей, таких как доступ к библиотекам .net, полная сборка мусора и т. Д.
ATL и MFC несколько сложнее выбирать. Я бы направил вас на страницу MSDN для выбора , чтобы выбрать между ними. Приятной особенностью ATL / MFC является то, что вам не нужен .NET Framework, для развертывания должны быть установлены только среды выполнения VC / MFC.
Использование Win32 напрямую обеспечивает наименьшие исполняемые файлы с наименьшим количеством зависимостей, но требует больше труда для написания. У вас наименьшее количество вспомогательных библиотек, поэтому вы пишете больше кода.