Windows.h

Last updated

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.

Contents

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

// in C:#include<Windows.h>// in C++: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

NameDescription
<ctype.h> character classification
<stdarg.h> variable-argument function support
<string.h> string and buffer manipulation

Basic

NameDescription
<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 services
<windef.h>various macros and types
<winerror.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>Calls on user32.dll for 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

NameDescription
<cderr.h>CommDlgExtendedError function error codes
<commldg.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

NameDescription
<ole2.h> OLE (Object Linking and Embedding)
<objbase.h> COM (Component Object Model)
<oleauto.h> OLE Automation
<oletlid.h>various GUID definitions

Macros

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

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

  1. 1 2 "Windows Data Types". learn.microsoft.com. 7 November 2024.
  2. "guiddef.h header". learn.microsoft.com. 23 January 2023.
  3. "winerror.h header". learn.microsoft.com. 23 January 2023.
  4. "wingdi.h header". learn.microsoft.com. 23 January 2023.
  5. "winnetwk.h header". learn.microsoft.com. 23 January 2023.
  6. "winnt.h header". learn.microsoft.com. 23 January 2023.
  7. "winreg.h header". learn.microsoft.com. 23 January 2023.
  8. "MAKEINTRESOURCEA macro (winuser.h)". learn.microsoft.com. 19 November 2024.
  9. "DialogBoxA macro (winuser.h)". learn.microsoft.com. 22 February 2024.
  10. "winuser.h header". learn.microsoft.com. 23 January 2023.
  11. "winver.h header". learn.microsoft.com. 23 January 2023.
  12. "Making Win32 APIs More Accessible to More Languages". blogs.windows.com. 21 January 2021.
  13. "win32metadata" . Retrieved 4 September 2025.