Автор: cheops (02.02.2012 в 13:37)
Это версия Windows, которая позволяет сообщить компилятору каким объемом Windows API вы собираетесь пользоваться. Когда переходят с одного ядра Windows на другое, появляются новые функции Windows API, которые на предыдущей версии не доступны. Понятно, что глупо программировать полосу прогресса в панели задач, для операционных систем предшествующих Win7, в которых такой возможности в заводе не было.
Поэтому вы по прежнему можете использовать это определение для выбора подмножества WindowsAPI. Кстати, вместо числа можно использовать предопределенные константы, которых сейчас довольно много.
Windows 7 _WIN32_WINNT_WIN7 (0x0601)
Windows Server 2008 _WIN32_WINNT_WS08 (0x0600)
Windows Vista _WIN32_WINNT_VISTA (0x0600)
Windows Server 2003 with SP1, Windows XP with SP2 _WIN32_WINNT_WS03 (0x0502)
Windows Server 2003, Windows XP _WIN32_WINNT_WINXP (0x0501)
Windows 2000 _WIN32_WINNT_WIN2K (0x0500) |
Т.е. если вы не собираетесь поддерживать системы ниже Windows XP (SP2), то можете смело писать что-то в этом духе
#define _WIN32_WINNT _WIN32_WINNT_WS03 |
Причем это вовсе не означает, что если вы использовали эту константу, то программа под более старые версии не будет работать. Это просто означает, что компилятор будет генерировать ошибку при попытке использования новых функций Windows API, а программа сможете работать везде, где она найдет нужные ей функции, т.е. можно написать так, что и под Windows 95 у вас успешно все запустится (чтобы у вас не стояло в #define). Эта возможность позволяет сидя под Windows 7, быть уверенным, что вы не задействовали ничего такого, чего бы не было бы в Windows XP.