windows.h
Windows.h is a source code header file that Microsoft provides for the development of programs that access the Windows API (WinAPI) via C language. It declares the WinAPI functions, associated data types and common macros.
Access to WinAPI can be enabled for a C or C++ program by including it into a source file:
#include <Windows.h>
// since C++20:
import <Windows.h>;
Also, the executable must be linked to each static library that either contains the function code or more commonly defines runtime, dynamic linking to a system dynamic link library (DLL). Generally, for functions in a DLL named like Abc.dll, the program must be linked to a library named like Abc.lib. For MinGW, the library name is like libAbc.dll.a.
Included header files
Including windows.h results in including various other header files that are included directly or indirectly by windows.h. Many of these header files cannot be included on their own due to dependencies between the various header files.
Notable included header files:
Standard C
ctype.h
: character classificationstdarg.h
: variable-argument function supportstring.h
: string and buffer manipulation
Basic
basetsd.h
: various types[1]guiddef.h
: the GUID[2]imm.h
: Input Method Editor (IME)winbase.h
: kernel32.dll: kernel services; advapi32.dll: kernel services (e.g.CreateProcessAsUser()
function), access control (e.g.AdjustTokenGroups()
function).wincon.h
: console serviceswindef.h
: various macros and typeswinerror.h
: error codes[3]wingdi.h
: Graphics Device Interface (GDI)[4]winnetwk.h
: Windows Networking (WNet)[5]winnls.h
: Native Language Support (NLS)winnt.h
: various macros and types (for Windows NT)[6]winreg.h
: Windows registry[7]winsvc.h
: Windows services and the Service Control Manager (SCM)winuser.h
: user32.dll: user services, inline resource macro(e.g.MAKEINTRESOURCE
macro[8]), inline dialog macro(e.g. DialogBox function[9]).[10]winver.h
: version information[11]
Extra
cderr.h
:CommDlgExtendedError
function error codescommldg.h
: Common Dialog Boxesdde.h
: DDE (Dynamic Data Exchange)ddeml.h
: DDE Management Librarydlgs.h
: various constants for Common Dialog Boxeslzexpand.h
: LZ (Lempel-Ziv) compression/decompressionmmsystem.h
: Windows Multimedianb30.h
: NetBIOSrpc.h
: RPC (Remote procedure call)shellapi.h
: Windows Shell APIwincrypt.h
: Cryptographic APIwinperf.h
: Performance monitoringwinresrc.h
: used in resourceswinsock.h
: Winsock (Windows Sockets), version 1.1winspool.h
: Print Spoolerwinbgim.h
: Standard graphics library
OLE and COM
ole2.h
: OLE (Object Linking and Embedding)objbase.h
: COM (Component Object Model)oleauto.h
: OLE Automationoletlid.h
: various GUID definitions
Macros
Several macros affect the definitions made by windows.h and the files it includes.
UNICODE
; when defined, this causes the generic text datatypeTCHAR
to be a synonym of WCHAR instead of CHAR[1], and all type-generic API functions and messages that work with text will be defined to the -W versions instead of the -A versions. It is similar to the windows C runtime's_UNICODE
macro.RC_INVOKED
defined when the resource compiler (RC.EXE) is in use instead of a C compiler.WINVER
used to enable features only available in newer operating systems. Define it to0x0501
for Windows XP, and0x0600
for Windows Vista.WIN32_LEAN_AND_MEAN
used to reduce the size of the header files and speed up compilation. Excludes things like cryptography, DDE, RPC, the Windows Shell and Winsock.
Other languages
Microsoft has plans to update the Windows API for modern C++ usage with their win32metadata
project.[12] Microsoft has also created bindings for other languages, including C# and Rust for calling the Win32 API.[13]
See also
References
- ^ a b "Windows Data Types". learn.microsoft.com. 7 November 2024.
- ^ "guiddef.h header". learn.microsoft.com. 23 January 2023.
- ^ "winerror.h header". learn.microsoft.com. 23 January 2023.
- ^ "wingdi.h header". learn.microsoft.com. 23 January 2023.
- ^ "winnetwk.h header". learn.microsoft.com. 23 January 2023.
- ^ "winnt.h header". learn.microsoft.com. 23 January 2023.
- ^ "winreg.h header". learn.microsoft.com. 23 January 2023.
- ^ "MAKEINTRESOURCEA macro (winuser.h)". learn.microsoft.com. 19 November 2024.
- ^ "DialogBoxA macro (winuser.h)". learn.microsoft.com. 22 February 2024.
- ^ "winuser.h header". learn.microsoft.com. 23 January 2023.
- ^ "winver.h header". learn.microsoft.com. 23 January 2023.
- ^ "Making Win32 APIs More Accessible to More Languages". blogs.windows.com. 21 January 2021.
- ^ "win32metadata". Retrieved 4 September 2025.
