Использование заголовочных файлов Windows
Заголовочные файлы Windows API дают Вам возможность создавать 32-и 64-разрядные приложения, которые выполняются в Microsoft ® Windows ®. Они используют типы данных, которые дают возможность создавать и 32- и 64-разрядные версии вашего приложения из единственного исходного кода. Дополнительную информацию, см. в статье Подготовка 64-разрядного Windows.
Microsoft® Visual C++® включает в себя копии заголовочных файлов Windows, которые были актуальными на момент выпуска Visual C++®. Поэтому, если Вы устанавливаете обновленные заголовочные файлы из SDK, то можете оказаться с несколькими версиями одних и тех же заголовочных файлов на вашем компьютере. Чтобы гарантировать, что Вы используете, последнюю версию заголовочных файлов SDK, следуйте указаниям, включенными в статью Инсталляция Платформы SDK с Visual Studio. Или же, Вы получите нижеследующую ошибку при компилировании кода, который использует функции, которые были введены после того, как Visual C++® был : ошибка C2065: необъявленный идентификатор.
Некоторые функции, которые зависят от конкретной версии Windows, объявляются, используя условный код. Это дает Вам возможность использовать компилятор, который обнаружит, использует ли ваша программа функции, которые не поддерживаются его целевой версией(ями) Windows. Чтобы компилировать приложение, которое использует эти функции, Вы должны определить соответствующее макроопределение. В противном случае, Вы получите сообщение об ошибке C2065. Ниже следует таблица, указывающая макроопределение, которое Вы должны определить для каждой намечаемой системы.
Таблица ниже указывает стандартный макрос, которым Вы должны определить каждый планируемый основной выпуск операционной системы. (Отдельные заголовочные файлы могут использовать другое макроопределение; поэтому, если происходят проблемы компиляции, проверьте заголовочный файл, который содержит описание условных определений).
Обязательная минимальная система | Макрос определения |
---|---|
семейство Windows Server 2003 | _WIN32_WINNT>=0x0502 WINVER>=0x0502 |
Windows XP | _WIN32_WINNT>=0x0501 WINVER>=0x0501 |
Windows 2000 | _WIN32_WINNT>=0x0500 WINVER>=0x0500 |
Windows NT 4.0 | _WIN32_WINNT>=0x0400 WINVER>=0x0400 |
Windows Me | _WIN32_WINDOWS=0x0500 WINVER>=0x0500 |
Windows 98 | _WIN32_WINDOWS>=0x0410 WINVER>=0x0410 |
Windows 95 | _WIN32_WINDOWS>=0x0400 WINVER>=0x0400 |
Internet Explorer 6.0 | _WIN32_IE>=0x0600 |
Internet Explorer 5.6 | _WIN32_IE>=0x0560 |
Internet Explorer 5.01, 5.5 | _WIN32_IE>=0x0501 |
Internet Explorer 5.0, 5.0a, 5.0b | _WIN32_IE>=0x0500 |
Internet Explorer 4.01 | _WIN32_IE>=0x0401 |
Internet Explorer 4.0 | _WIN32_IE>=0x0400 |
Internet Explorer 3.0, 3.01, 3.02 | _WIN32_IE>=0x0300 |
Обратите внимание! на то, что это некоторые функции, представленные в последней версии Windows могут быть добавлены к сервисному пакету для предыдущей версии Windows. Поэтому, чтобы наметить сервисный пакет, Вам, возможно, нужно определить _WIN32_WINNT со значением для следующего старшего выпуска операционной системы. |
Например, функция GetDllDirectory была введена в Windows Server 2003 и условно определяется, если установлен макрос _WIN32_WINNT - 0x0502 или больший. Эта функция была также добавлена и в Windows XP SP1. Поэтому, если Вы определили _WIN32_WINNT 0x0501, чтобы запланировать Windows XP, то пропустите функции, которые определяются в Windows XP SP1.
Например, чтобы использовать функции специально предназначенные в заголовочных файлах для Windows 2000, Вы должны явно определить _WIN32_WINNT как 0x0500 или больше. Вы можете определить идентификаторы, используя оператор #define в каждом исходном файле, или определяя параметр /d_win32_winnt=0x0500, поддерживаемый Visual C++.
Visual C++ 6.0: Чтобы определить параметры компилятора, перейдите в пункт меню Projects (Проекты) и щелкните по пункту Settings (Установки), затем выберите вкладку C/C++.
Visual C++ 7.0: Чтобы определить параметры компилятора, перейдите в пункт меню Projects (Проекты) и щелкните по пункту Properties (Свойства).