Включить окна h c что это такое
Обновлено: 21.11.2024
Основным заголовочным файлом C для доступа к Win32 API является заголовочный файл. Чтобы сделать исполняемый файл Win32, первым делом нужно включить этот заголовочный файл в исходный код. Заголовочный файл windows.h должен быть включен до включения любой другой библиотеки, даже файлов стандартной библиотеки C, таких как stdio.h или stdlib.h. Это связано с тем, что файл windows.h включает макросы и другие компоненты, которые могут изменять, расширять или заменять элементы этих библиотек. Это особенно верно при работе с UNICODE, потому что windows.h заставит все строковые функции использовать вместо этого UNICODE. Кроме того, поскольку многие стандартные функции библиотеки C уже включены в ядро Windows, многие из этих функций будут доступны программисту без необходимости загрузки стандартных библиотек. Например, функция sprintf включается в windows.h автоматически.
Дочерние заголовочные файлы [ edit | изменить источник ]
Существует ряд файлов заголовков, которые автоматически включаются в windows.h. Многие из этих файлов не могут быть просто включены сами по себе из-за зависимостей. Заголовочный файл windows.h на самом деле является относительно небольшим файлом, который обеспечивает условное включение ряда других заголовочных файлов, определения нескольких важных макросов и т. д.
Список дочерних заголовочных файлов см. на странице -----------
Дополнительные заголовочные файлы [ редактировать | изменить источник ]
В этом разделе речь пойдет о некоторых других интересных заголовочных файлах и библиотеках, которые можно включить в ваш проект, но которые по умолчанию не включены в windows.h.
Макросы windows.h [ редактировать | изменить источник ]
В этом разделе кратко описаны некоторые изменения, которые пользователь может внести в структуру windows.h во время компиляции с помощью макросов.
WIN32_LEAN_AND_MEAN [ изменить | изменить источник ]
Макрос WIN32_LEAN_AND_MEAN приводит к тому, что несколько дочерних заголовков не включаются в сборку. Это может помочь ускорить процесс компиляции.
UNICODE и _UNICODE [ редактировать | изменить источник ]
Эти макросы, которые мы обсудим позже, обычно взаимозаменяемы, но часто оба определяются вместе. Это приводит к тому, что программа компилируется со строками в кодировке UTF-16 вместо строк в кодировке ASCII. UTF-16 — это интернациональная кодировка, основанная на стандарте UNICODE и допускающая использование большего количества символов, чем американская кодировка ASCII, хотя в современном программировании часто предпочтительнее использовать UTF-8.
WINVER и _WIN32_WINNT [ редактировать | изменить источник ]
Вы должны установить для них число, большее или равное 0x500, иначе вы не получите некоторые полезные функции, которые есть в Windows 2000 (и, следовательно, во всех современных Windows), но не были в Windows 98.
Файлы заголовков для Windows API позволяют создавать 32- и 64-разрядные приложения. Они включают объявления для версий API как для Unicode, так и для ANSI. Дополнительные сведения см. в разделе Юникод в Windows API. Они используют типы данных, которые позволяют создавать как 32-, так и 64-разрядные версии вашего приложения из единой базы исходного кода. Дополнительные сведения см. в разделе Подготовка к 64-разрядной версии Windows. К дополнительным функциям относятся аннотации заголовков и СТРОГАЯ проверка типов.
Visual C++ и заголовочные файлы Windows
Microsoft Visual C++ включает копии файлов заголовков Windows, которые были актуальны на момент выпуска Visual C++. Поэтому, если вы устанавливаете обновленные заголовочные файлы из SDK, на вашем компьютере может оказаться несколько версий заголовочных файлов Windows. Если вы не убедитесь, что используете последнюю версию файлов заголовков SDK, вы получите следующий код ошибки при компиляции кода, использующего функции, появившиеся после выпуска Visual C++: ошибка C2065: необъявленный идентификатор.
Макросы для условных объявлений
Некоторые функции, зависящие от конкретной версии Windows, объявляются с использованием условного кода. Это позволяет использовать компилятор для определения того, использует ли ваше приложение функции, которые не поддерживаются в его целевой версии (версиях) Windows. Чтобы скомпилировать приложение, использующее эти функции, необходимо определить соответствующие макросы. В противном случае вы получите сообщение об ошибке C2065.
В файлах заголовков Windows используются макросы, чтобы указать, какие версии Windows поддерживают многие программные элементы. Следовательно, вы должны определить эти макросы, чтобы использовать новые функции, представленные в каждом основном выпуске операционной системы. (В отдельных файлах заголовков могут использоваться разные макросы, поэтому при возникновении проблем с компиляцией проверьте файл заголовков, содержащий определение, на наличие условных определений.) Дополнительную информацию см. в SdkDdkVer.h.
В следующей таблице описаны предпочтительные макросы, используемые в файлах заголовков Windows. Если вы определяете NTDDI_VERSION, вы также должны определить _WIN32_WINNT.
Минимальная требуемая система | Значение NTDDI_VERSION |
---|---|
Windows 10 1903 " 19H1" | NTDDI_WIN10_19H1 (0x0A000007) |
Windows 10 1809 "Redstone 5" | NTDDI_WIN10_RS5 (0x0A000006) | < /tr>
Windows 10 1803 "Redstone 4" | NTDDI_WIN10_RS4 (0x0A000005) |
Windows 10 1709 "Redstone 3" td> | NTDDI_WIN10_RS3 (0x0A000004) |
Windows 10 1703 "Redstone 2" | NTDDI_WIN10_RS2 (0x0A000003) | Windows 10 1607 "Redstone 1" | NTDDI_WIN10_RS1 (0x0A000002) |
Windows 10 1511 "Threshold 2" | NTDDI_WIN10_TH2 (0x0A000001) |
Windows 10 1507 "Порог" | NTDDI_WIN10 (0x0A000000) |
Windows 8.1 | NTDDI_WINBLUE (0x06030000) |
Windows 8 | NTDDI_WIN8 (0x06020000) |
Windows 7 | NTDDI_WIN7 (0x06010000) |
Windows Server 2008 | NTDDI_WS08 (0x06000100) |
Windows Vista с пакетом обновления 1 (SP1) | NTDDI_VISTASP1 (0x06000100) | < /tr>
Windows Vista | NTDDI_VISTA (0x06000000) |
Windows Server 2003 с пакетом обновления 2 (SP2) | NTDDI_WS03SP2 (0x05020200) |
Windows Server 2003 с пакетом обновления 1 (SP1) | NTDDI_WS03SP1 (0x05020100) |
Windows Server 2003 | NTDDI_WS03 (0x05020000) |
Windows XP с пакетом обновления 3 (SP3) | NTDDI_WINXPSP3 (0x05010300) |
Windows XP с пакетом обновления 2 (SP2) | NTDDI_WINXPSP2 (0x05010200) |
NTDDI_WINXPSP1 (0x05010100) | |
Windows XP | NTDDI_WINXP (0x05010000)< /td> |
В следующих таблицах описаны другие макросы, используемые в файлах заголовков Windows.
Минимальная требуемая система | Минимальное значение для _WIN32_WINNT и WINVER |
---|---|
Windows 10 | _WIN32_WINNT_WIN10 (0x0A00) |
Windows 8.1 | _WIN32_WINNT_WINBLUE (0x0603) |
Windows 8 | _WIN32_WINNT_WIN8 (0x0602) |
Windows 7 | _WIN32_WINNT_WIN7 (0x0601) |
Windows Server 2008 | _WIN32_WINNT_WS08 (0x0600) |
Windows Vista | _WIN32_WINNT_VISTA (0x0600) td> |
Windows Server 2003 с пакетом обновления 1 (SP1), Windows XP с пакетом обновления 2 (SP2) | _WIN32_WINNT_WS03 (0x0502) |
Windows Server 2003 , Windows XP | _WIN32_WINNT_WINXP (0x0501) |
Требуется минимальная версия | Минимальное значение _WIN32_IE |
---|---|
Internet Explorer 11.0 | _WIN32_IE_IE110 (0x0A00) |
Internet Explorer 10.0 | _WIN32_IE_IE100 (0x0A00) |
Internet Explorer 9.0 | _WIN32_IE_IE90 (0x0900) |
Internet Explorer 8.0 | _WIN32_IE_IE80 (0x0800) | < /tr>
Internet Explorer 7.0 | _WIN32_IE_IE70 (0x0700) |
Internet Explorer 6.0 SP2 | _WIN32_IE_IE60SP2 ( 0x0603) |
Internet Explorer 6.0 SP1 | _WIN32_IE_IE60SP1 (0x0601) |
Internet Explorer 6.0 td> | _WIN32_IE_IE60 (0x0600) |
Internet Explorer 5.5 | _WIN32_IE_IE55 (0x0550) |
Internet Explorer 5.01 | _WIN32_IE_IE501 (0x0501) |
Internet Explorer 5.0, 5.0a, 5.0b | _WIN32_IE_IE50 (0x0500)< /td> |
Настройка WINVER или _WIN32_WINNT
Например, чтобы установить WINVER в исходном файле, используйте следующую инструкцию:
Чтобы установить _WIN32_WINNT в исходном файле, используйте следующий оператор:
Чтобы установить _WIN32_WINNT с помощью параметра компилятора /D, используйте следующую команду:
cl -c /D_WIN32_WINNT=0x0502 исходный код.cpp
Информацию об использовании параметра компилятора /D см. в разделе /D (определения препроцессора).
Обратите внимание, что некоторые функции, представленные в последней версии Windows, могут быть добавлены в пакет обновлений для предыдущей версии Windows. Поэтому, чтобы настроить пакет обновления, вам может потребоваться определить _WIN32_WINNT со значением для следующего основного выпуска операционной системы. Например, функция GetDllDirectory появилась в Windows Server 2003 и определяется условно, если _WIN32_WINNT имеет значение 0x0502 или больше. Эта функция также была добавлена в Windows XP с пакетом обновления 1 (SP1). Поэтому, если бы вы определили _WIN32_WINNT как 0x0501 для целевой Windows XP, вы бы упустили функции, определенные в Windows XP с пакетом обновления 1 (SP1).
Управление упаковкой структуры
Быстрая сборка с меньшими файлами заголовков
Вы можете уменьшить размер заголовочных файлов Windows, исключив некоторые менее распространенные объявления API следующим образом:
Определите WIN32_LEAN_AND_MEAN, чтобы исключить такие API, как криптография, DDE, RPC, Shell и сокеты Windows.
Было бы очень полезно, если бы кто-нибудь мог кратко объяснить использование windows.h . Также расскажите о функциях, которые он предлагает.
Windows.h — это основной заголовочный файл для WinAPI.
WinAPI — это все, что связано с программированием в Windows. Все, что связано с созданием/управлением окнами или взаимодействием с ОС или файловой системой.
Такие вещи, как:
- Создание Windows
- Основные графические возможности (WinGDI)
- Перечисление файлов в каталоге
- Вывод общих диалоговых окон (диалог "Сохранить как" , диалоговое окно "Выберите цвет" и т. д.)
- Запрос информации о системе (например, о запущенных процессах и т. д.)
- и т. д.
- и т. д.
Список можно продолжать и продолжать. WinAPI огромен.
можно ли использовать его, чтобы получить щелчок мышью. Если да, то вы поможете мне с кодом. Пожалуйста, включите пояснения. Спасибо!
Да. Хотя я знаю, как обрабатывать ввод с помощью мыши только через обычные окна. не через консоль. Так что, если вы еще не используете WinAPI для создания собственного окна, я не могу помочь вам с этой насущной проблемой, не написав большого учебника по основам WinAPI, что больше, чем я готов сделать прямо сейчас =x Извините .
В Google можно найти несколько руководств по началу работы с WinAPI. Или, может быть, кто-то еще может ответить на ваш вопрос.
У меня мало времени, но я быстро что-нибудь придумаю:
Ну, я мог бы просто взять что-нибудь из Интернета, вместо того, чтобы печатать все это здесь, но да ладно, уже слишком поздно.
Надеюсь, это помогло!
Правильные структуры/функции для использования в этом коде:
WNDCLASSA (не WNDCLASS)
CreateWindowA (не CreateWindow)
MessageBoxA (не MessageBox)
Хм, если вам нужен быстрый и простой способ узнать, была ли нажата кнопка мыши, просто найдите GetAsyncKeyState(VK_LBUTTON), хотя это не работает с вуду переключения клавиш мыши.
h — это заголовочный файл для Windows для языков программирования C и C++, который содержит объявления для всех функций Windows API, всех общих макросов, используемых программистами Windows, и всех типов данных, используемых различными функциями. и подсистемы. Некоторые заголовки не связаны с .
Что такое библиотечные функции в C?
Таблица функций стандартной библиотеки C, по имени
Функция | Включаемый системный файл | Описание |
---|---|---|
fmod | math.h | Вычисляет остаток с плавающей запятой от x/y. |
fopen | stdio.h< /td> | Открывает указанный файл. |
fprintf | stdio.h | Формирует и печатает символы и значения в выходной поток. |
fputc1 | stdio.h | Выводит символ в выходной поток. | тр>таблица>