windows.h is a Windows-specific header file for the C and C++ programming languages 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).
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 GUID
type
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 – CommDlgExtendedError
function 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
winbgim.h – Standard graphics library
OLE and COM
ole2.h – OLE (Object Linking and Embedding)
objbase.h – COM (Component Object Model)
oleauto.h – OLE Automation
olectlid.h – various GUID definitions
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.