my-server
← Wiki

Windows.h

<code><Windows.h></code> 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:

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 , the program must be linked to a library named like . For MinGW, the library name is like .

Included header files

Including results in including various other header files that are included directly or indirectly by . 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

Basic

Extra

OLE and COM

Macros

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

  • <code>UNICODE</code>; when defined, this causes the generic text datatype <code>TCHAR</code> to be a synonym of instead of , 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 <code>_UNICODE</code> macro.
  • <code>RC_INVOKED</code> defined when the resource compiler () is in use instead of a C compiler.
  • <code>WINVER</code> used to enable features only available in newer operating systems. Define it to <code>0x0501</code> for Windows XP, and <code>0x0600</code> for Windows Vista.
  • <code>WIN32_LEAN_AND_MEAN</code> 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 <code>win32metadata</code> project. Currently, there is C++/WinRT and "Windows Implementation Library" (WIL) for doing this in modern C++. Microsoft has also created bindings for other languages, including C# and Rust for calling the Win32 API.

See also

References