|
|
|
| При разработке Windows программ, во всех книгах указывается константа
#define _WIN32_WINNT 0x0500 | Сейчас это значение по-прежнему актуально? И вообще нужно ли оно сейчас? | |
|
|
|
|
|
|
|
для: asker++
(02.02.2012 в 13:07)
| | Это версия 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. | |
|
|
|
|
|
|
|
для: cheops
(02.02.2012 в 13:37)
| | Спасибо, тогда мне наверное это вообще не надо, так как пишу программы только для себя.
ЗЫ Это получается, что Windows 7 никакая не 7, а 6? | |
|
|
|
|
|
|
|
для: asker++
(02.02.2012 в 13:49)
| | Ну эти внешние названия довольно условны... и придумываются маркетологами, кстати. Согласитесь, что Windows 7 звучит и выглядит лучше, чем Windows 6... тем более, что во многих культурах число 7 священное, а вот 6 так себе воспринимается...
Что же касается версии ядра, то тут все последовательно, в начале 90-х была версия WinNT 3.51, затем в рамках же Windows NT появилось ядро 4.0, затем в рамках объединения ветки NT и ветки Win9X появился Windows 2000 с ядром 5.0 (для Windows XP версия ядра была 5.1), следующая глобальная смена версии ядра произошла с вводом Windows Vista (6.0), по аналогии с Windows XP в версии ядра Win7, была изменена лишь вторая цифра 6.1.
Все это довольно условно, так как изменения вносятся постоянно, плюс ко всему ядро это еше не вся операционная система.
[поправлено модератором: новый вопрос выделен в новую тему WinAPI: проверка версии Windows] | |
|
|
|