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 syntax. It declares the WinAPI functions, associated data types and common macros.

Access to WinAPI can enabled for a C or C++ program by including it into a source file:

 #include <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

edit

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 dependencies between the various header files.

Notable included header files:

Standard C

edit

Basic

edit

Extra

edit
  • 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

edit
  • ole2.h – OLE (Object Linking and Embedding)
  • objbase.h – COM (Component Object Model)
  • oleauto.h – OLE Automation
  • olectlid.h – various GUID definitions

Macros

edit

Several macros affect the definitions made by windows.h and the files it includes.

  • UNICODE – when defined, this causes the generic text datatype TCHAR to be a synonym of WCHAR instead of CHAR[12], 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.