windows.h is a Windows-specific header file for the C programming language which contains declarations for all of the functions in the Windows API, all the common macros used by Windows programmers, and all the data types used by the various functions and subsystems. It defines a very large number of Windows specific functions that can be used in C. The Win32 API can be added to a C programming project by including the <windows.h> header file and linking to the appropriate libraries. To use functions in xxxx.dll, the program must be linked to xxxx.lib (or libxxxx.dll.a in MinGW). Some headers are not associated with a .dll but with a static library (e.g. scrnsave.h needs scrnsave.lib).
Child header files
There are a number of child header files that are automatically included with windows.h. Many of these files cannot simply be included by themselves (they are not self-contained), because of dependencies.
windows.h may include any of the following header files:
- excpt.h – Exception handling
- stdarg.h – variable-argument functions (standard C header)
- windef.h – various macros and types
- winnt.h – various macros and types (for Windows NT)
- basetsd.h – various types
- guiddef.h – the
- ctype.h – character classification (standard C header)
- string.h – strings and buffers (standard C header)
- winbase.h – kernel32.dll: kernel services; advapi32.dll:kernel services(e.g. CreateProcessAsUser function), access control(e.g. AdjustTokenGroups function).
- winerror.h – Windows error codes
- wingdi.h – GDI (Graphics Device Interface)
- winuser.h – user32.dll: user services
- winnls.h – NLS (Native Language Support)
- wincon.h – console services
- winver.h – version information
- winreg.h – Windows registry
- winnetwk.h – WNet (Windows Networking)
- winsvc.h – Windows services and the SCM (Service Control Manager)
- imm.h – IME (Input Method Editor)
- cderr.h –
CommDlgExtendedErrorfunction error codes
- commdlg.h – Common Dialog Boxes
- dde.h – DDE (Dynamic Data Exchange)
- ddeml.h – DDE Management Library
- dlgs.h – various constants for Common Dialog Boxes
- lzexpand.h – LZ (Lempel-Ziv) compression/decompression
- mmsystem.h – Windows Multimedia
- nb30.h – NetBIOS
- rpc.h – RPC (Remote procedure call)
- shellapi.h – Windows Shell API
- wincrypt.h – Cryptographic API
- winperf.h – Performance monitoring
- winresrc.h – used in resources
- winsock.h – Winsock (Windows Sockets), version 1.1
- winspool.h – Print Spooler
OLE and COM
Several macros affect the behavior of windows.h.
- UNICODE – when defined, this causes TCHAR to be a synonym of WCHAR instead of CHAR, 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 to 0x0501 for Windows XP, and 0x0600 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.