Fact-checked by Grok 2 weeks ago

windows.h

windows.h is the primary header file in the (WinAPI) that provides developers with declarations for functions, macros, and data types necessary for creating Windows applications in C and C++.[] This header enables the development of both 32-bit and 64-bit applications from a single base by including compatible data types and supporting conditional compilation for different Windows versions.[] It is part of the Windows Software Development Kit (SDK) and is included with Microsoft Visual C++ for seamless integration into projects.[] Key features of windows.h include support for both and ANSI versions of functions, allowing developers to choose based on application needs.[] Developers can use macros like _WIN32_WINNT and NTDDI_VERSION to target specific Windows platforms, such as defining _WIN32_WINNT 0x0A00 for compatibility.[] To optimize compilation times and reduce bloat, the WIN32_LEAN_AND_MEAN macro can be defined to exclude less commonly used from the header.[] Additionally, enabling STRICT mode through #define STRICT enforces stricter type checking for window procedures and other callbacks, enhancing code reliability.[] The header maintains default 8-byte structure packing to ensure binary compatibility with the , and it is regularly updated through the Windows SDK to incorporate new features and fixes.[]

Overview

Purpose and Role

windows.h serves as the primary umbrella header file provided by for C and C++ programs targeting the (WinAPI). It consolidates declarations for a vast array of functions, structures, constants, and macros essential for Windows-specific operations, including window management, file input/output, and system calls. By including this header, developers gain access to the core interfaces needed to interact with the operating system at a low level, forming the foundation for building native Windows applications. This header supports the development of both 32-bit and 64-bit applications from a unified source code base, utilizing platform-agnostic data types to ensure compatibility across architectures. Additionally, it provides declarations for both Unicode and ANSI versions of API elements, allowing developers to choose between character encoding schemes based on application requirements—Unicode for international support and ANSI for legacy compatibility. These features enable seamless portability and internationalization in Windows software development. The design of windows.h simplifies application development by aggregating numerous individual header files into a single inclusion, thereby reducing complexity and minimizing the need to manually specify multiple includes for common WinAPI functionalities. This consolidation streamlines the , particularly for projects requiring broad access to Windows subsystems, while macros like WIN32_LEAN_AND_MEAN allow to exclude less frequently used APIs for optimized build times.

History and Evolution

The windows.h header file originated in the early as the master include for the Win32 API, enabling the transition from 16-bit programming in earlier Windows versions like to 32-bit development. The full Win32 API, including windows.h, was introduced with in July 1993, providing a unified interface for applications on 32-bit platforms. Partial 32-bit functionality was later added via in 1994 for , with full consumer implementation arriving with in 1995. Windows NT 3.1 marked a pivotal evolution for windows.h by incorporating NT-specific enhancements to the Win32 API, such as advanced features for and , as well as built-in networking for remote procedure calls and system services. These additions distinguished from consumer-oriented Windows versions, emphasizing enterprise-grade capabilities like protected and support. Subsequent releases further expanded the header's scope. Windows 95 in 1995 introduced shell integration updates to the Win32 , including new functions for Explorer-based file operations and lightweight utilities via SHLWAPI.DLL, improving desktop customization and compatibility with 16/32-bit hybrid environments. By 2001, Windows XP provided enhancements to multimedia support through updates to and better integration with , boosting capabilities for consumer media applications. The 2015 launch of integrated windows.h with the Universal Windows Platform (UWP), allowing Win32 developers to access modern APIs for cross-device compatibility while maintaining backward support for legacy code. Microsoft continues to evolve the header via annual Windows SDK releases, leveraging macros like _WIN32_WINNT (e.g., 0x0A00 for ) to conditionally expose version-targeted features and prevent compatibility issues. This evolution has continued into (released 2021) with support for ARM64 architectures and enhanced security features as of the Windows SDK 10.0.26100.0 in 2024. By the , windows.h has expanded to over 10,000 lines when fully processed, incorporating more than 100 sub-headers that address API growth, with build optimizations like WIN32_LEAN_AND_MEAN mitigating inclusion bloat.

Usage Guidelines

Inclusion Practices

The standard syntax for including the windows.h header in C and C++ source files is #include <windows.h>, which provides access to the core Windows API functions, types, and macros. This inclusion is typically placed at the top of files that require Win32 API functionality, but after any project-specific macro definitions—such as #define WIN32_LEAN_AND_MEAN to exclude rarely used APIs and reduce compilation time, or #define NOMINMAX to prevent macro conflicts with standard library functions like std::min and std::max. While it can follow standard library includes like <iostream> in mixed-language codebases, best practice prioritizes these protective macros immediately before the inclusion to influence conditional compilation and minimize namespace issues. For compatibility across architectures, including x86, x64, and ARM64, the windows.h header relies on the Windows SDK, which must be installed and configured in the build environment. In , the compiler automatically detects and uses the latest installed SDK version, ensuring seamless support for cross-architecture builds without manual adjustments. As of November 10, 2025, the latest Windows SDK (version 10.0.26100) includes optimizations for features, such as enhanced ARM64 support and updated API surfaces. Alternative toolchains like also provide compatible implementations of windows.h for cross-architecture targeting, though they require explicit SDK path configuration during setup. Common pitfalls in inclusion practices include unintended namespace pollution in C++ projects, where windows.h introduces global macros and types that can conflict with elements, leading to compilation errors. To mitigate this, defining NOMINMAX prior to inclusion disables problematic min/max macros, preserving std::min and std::max functionality. Multiple inclusions are generally avoided automatically, as windows.h and its sub-headers incorporate include guards (e.g., #ifndef _WINDOWS_) to prevent redefinition errors during preprocessing. Another frequent issue arises from header ordering; including windows.h after certain or headers (like unknwn.h) can cause compilation failures due to type mismatches, so it should precede such specialized includes when combined.

Conditional Compilation

Conditional compilation in windows.h allows developers to customize the inclusion of declarations based on project requirements, optimizing for binary size, compilation speed, and feature availability by excluding unnecessary components. This is achieved through directives and macros defined before including the header, which control the conditional blocks within windows.h and its sub-headers. By leveraging these mechanisms, applications can target specific Windows versions, character sets, and typing strictness while minimizing bloat from unused s. The WIN32_LEAN_AND_MEAN , when defined prior to including windows.h, excludes declarations for infrequently used APIs such as those related to , (), Remote Procedure Calls (RPC), shell operations, and Windows Sockets, resulting in smaller header files and faster compilation times. This macro is particularly useful for reducing the overall footprint of the surface in resource-constrained environments or during build optimization. Version-targeting macros like _WIN32_WINNT specify the minimum supported Windows version, enabling or disabling feature-specific declarations such as those for or enhanced security functions; for example, defining _WIN32_WINNT as 0x0601 targets and later, ensuring compatibility while omitting older or unsupported elements. Similarly, the related WINVER macro sets the version for certain system queries, influencing conditional inclusions throughout the header ecosystem. For character encoding, the UNICODE and _UNICODE macros select wide-character (Unicode) versions of API functions and types, mapping string literals via the TEXT macro to L"..." for wide strings when defined, whereas the default ANSI mode uses narrow characters. The STRICT macro enforces type safety by redefining opaque handles (e.g., HWND to struct pointers) to prevent implicit casts between incompatible types, promoting more robust code during compilation. Additionally, NOMINMAX prevents the definition of min and max macros in windows.h that conflict with std::min and std::max from , avoiding compilation errors in C++ projects. Internally, windows.h employs #ifdef and #ifndef directives to conditionally include sub-headers, such as winspool.h for APIs only if relevant macros like WIN32_LEAN_AND_MEAN are not set to exclude them, allowing fine-grained control over the compiled output. Without such optimizations, the full inclusion of windows.h and its dependencies can substantially increase build times due to the expansive set of declarations.

Included Header Files

Standard C Headers

The windows.h header file incorporates several standard C library headers to provide essential, portable runtime support that underpins programming, ensuring compatibility with foundational constructs before introducing platform-specific extensions. These headers, originating from the standard (also known as C89 or ISO/IEC 9899:1990), include ctype.h for character classification functions such as isalpha and isdigit; limits.h for macros defining implementation-specific limits on types, such as INT_MAX and CHAR_BIT; and stdarg.h for macros that handle variable-length argument lists in functions like va_start and va_arg. This inclusion strategy allows windows.h to wrap these ANSI C elements within the Win32 programming model, promoting consistency and portability for developers mixing standard C code with Windows-native APIs. To avoid compilation issues like multiple inclusions or redefinitions, windows.h conditionally includes these headers only if they have not already been loaded in the source file, leveraging standard C preprocessor guards. The reliance on ANSI C89/C90 standards in these headers enables windows.h to support legacy codebases from the , allowing seamless integration of pre-Win32 C applications into contemporary Windows development environments. These foundational standard C headers establish the portable base that core Win32 headers extend with Windows-specific declarations.

Core Win32 Headers

The core Win32 headers included by windows.h provide the foundational building blocks for Windows programming, defining essential data types, structures, functions, and mechanisms for interacting with the operating system at a low level. These headers focus on fundamental operations such as and management, file handling, memory allocation, and error processing, enabling developers to build portable applications across Windows versions. By encapsulating platform-specific primitives, they abstract hardware and kernel details while ensuring compatibility between 32-bit and 64-bit environments. Among the key includes, windef.h establishes basic Windows data types and structures, such as BOOL (a Boolean value), DWORD (an unsigned 32-bit integer), HANDLE (an opaque handle to system resources), and geometric types like POINT, RECT, and SIZE for coordinate and dimension representations. These definitions form the primitive layer upon which higher-level APIs are constructed, promoting consistency in data representation across Windows subsystems. winbase.h builds on this by declaring core functions for process and thread operations (e.g., GetCurrentProcess to retrieve the current process handle, CreateFile for file I/O), environment variable management (e.g., GetEnvironmentVariable), and memory mapping (e.g., CreateFileMapping), along with error handling mechanisms like GetLastError. winnt.h introduces NT kernel-specific structures, including LIST_ENTRY for doubly-linked lists used in kernel objects, UNICODE_STRING for wide-character handling, and security identifiers like SID for access control, providing deeper integration with the Windows NT executive. Finally, excpt.h supports structured exception handling through types like EXCEPTION_POINTERS and intrinsics such as GetExceptionCode, enabling robust error recovery in C code via __try/__except blocks. These headers exhibit strong interdependencies to ensure logical layering: winbase.h explicitly requires windef.h for its type definitions and winnt.h for NT structures, while excpt.h complements winnt.h by extending exception-related types from the kernel model. Collectively, they define hundreds of constants (e.g., error codes like ERROR_SUCCESS) and functions that underpin all Win32 applications, forming a cohesive base for system-level programming without relying on specialized subsystems. This integration allows windows.h to conditionally include them based on macros like _WIN32_WINNT, tailoring exposure to version-specific features. Originating with the Win32 API in released in 1993, these headers marked the shift from 16-bit Windows to a robust, portable 32-bit subsystem compatible with influences and designed for enterprise scalability. Subsequent updates, particularly in , enhanced 64-bit support by adapting pointer sizes—such as SIZE_T expanding to 8 bytes on 64-bit platforms—and incorporating new macros like NTDDI_WIN10 (0x0A000000) for targeting modern features, while maintaining through conditional compilation. These evolutions ensure the core headers remain relevant for contemporary development, supporting both legacy and high-performance applications.

Extended and Specialized Headers

The windows.h header incorporates several extended and specialized sub-headers that provide access to advanced functionalities, such as user interfaces, graphics, console operations, , and registry management. These headers are included conditionally, depending on macros like WIN32_LEAN_AND_MEAN or specific exclusion symbols (e.g., NOWINOFFSETS), to allow developers to minimize overhead by omitting unnecessary declarations. This modular approach ensures that windows.h remains versatile for diverse application types while supporting domain-specific features beyond basic system calls. One prominent example is winuser.h, which declares functions and structures for creating and managing elements, including the CreateWindow function for instantiating windows and dialogs. It also defines numerous window messages (e.g., WM_PAINT for rendering updates) and key structures like MSG for handling message queues in . Similarly, wingdi.h supports the (GDI) by providing APIs for drawing operations, such as CreateDC for device contexts and bitmap manipulation, essential for legacy 2D graphics in Windows applications. For console-based applications, wincon.h offers functions like AllocConsole and WriteConsole to manage streams and virtual terminals. Networking capabilities are enabled through winsock.h, which provides the Windows Sockets for / socket programming; for advanced Winsock 2 features, developers should include winsock2.h before windows.h to avoid conflicts. Shell and system integration are handled by shellapi.h, featuring utilities such as ShellExecute for launching files and URLs through the . Registry access is facilitated by winreg.h, which includes functions like RegOpenKeyEx for reading and writing configuration data in the . Following the release of , made certain specialized headers optional by default to reduce header bloat and improve build times; developers must explicitly include headers like wininet.h for HTTP and FTP protocols (e.g., InternetOpen for session initialization) for internet-related features. Similarly, modern cryptographic operations via bcrypt.h, part of the API: Next Generation (CNG), with functions like BCryptGenRandom, require separate inclusion. These extensions collectively enable comprehensive development of feature-rich Windows applications while allowing fine-grained control over exposure. Further specialization for object-oriented technologies like and is addressed in dedicated headers.

OLE and COM Headers

The OLE and COM headers in windows.h provide the foundational declarations for (OLE) and the (COM), enabling developers to build reusable, binary-compatible software components that interact across processes and applications on Windows platforms. These technologies facilitate object-oriented extensibility, where applications can embed or link content from other programs, supporting features like drag-and-drop integration and . Key headers included conditionally within windows.h are ole2.h, which declares OLE automation functions such as OleCreate for instantiating embedded objects; objbase.h, which provides core primitives including CoCreateInstance for object creation and CoInitialize for library initialization; and oleauto.h, which defines automation data types like for scripting and type-safe interoperation. These inclusions occur after the WIN32_LEAN_AND_MEAN macro check, allowing developers to exclude them for leaner builds that omit less frequently used APIs. The role of these headers centers on enabling via COM's client-server model, where proxies and stubs handle marshaling for seamless object invocation across boundaries; supporting controls for embedding interactive UI elements in documents and browsers; and facilitating for scripting languages to control applications without recompilation. They define essential structures such as GUIDs for generation, the IUnknown as the base for all COM objects with methods like QueryInterface, AddRef, and Release for and interface discovery, and hundreds of APIs across categories like runtime host management, , and to ensure binary compatibility and versioning stability across Windows releases. OLE technology was introduced with Windows 3.1 in April 1992 as OLE 1.0, providing initial support for linking and embedding compound documents, and evolved into the more robust COM framework with OLE 2.0 later that year, emphasizing distributed object reuse. COM gained full native integration in Windows NT 3.1, released in July 1993, marking the shift to a platform-wide component architecture. By 2025, these headers continue to underpin legacy systems while supporting interoperability bridges to the Windows Runtime (WinRT), allowing classic COM objects to integrate with modern UWP and packaged desktop apps through projection and activation mechanisms.

Defined Elements

Macros for Calling Conventions

In the Windows API, macros for calling conventions are essential for defining how function parameters are passed, the stack is managed, and name decoration is applied, ensuring across compilers and preventing issues like stack corruption during DLL imports and exports. These macros, primarily defined in windef.h (included via windows.h), specify the __stdcall convention for 32-bit x86 architectures, where the callee cleans the stack after the call, which optimizes code size by avoiding redundant cleanup instructions in the caller. The primary macros include APIENTRY, CALLBACK, and WINAPI. APIENTRY is defined as an alias for WINAPI and is used for exporting Win32 functions, ensuring they adhere to the standard __stdcall convention on x86. CALLBACK specifies the calling convention for user-defined callback functions passed to the , typically also __stdcall to match expectations for passing from right to left and callee-managed stack cleanup. WINAPI serves as the core macro for most Windows declarations, directly mapping to __stdcall on 32-bit systems, which facilitates consistent interoperability in mixed-language environments. Variations and deprecated options provide flexibility for legacy or specialized code. PASCAL, now deprecated, was an early alias for __stdcall, reflecting the Pascal-influenced parameter ordering and stack management used in early Windows versions for compatibility. FASTCALL, specific to x86, employs the __fastcall convention to pass the first two integer or pointer arguments in registers (ECX and EDX) for performance gains in compute-intensive functions, though it is less common in standard usage. CDECL, defined as __cdecl, is used for functions with variable arguments (varargs), such as printf-like , where the caller handles stack cleanup to support flexible argument counts, contrasting with the fixed cleanup of stdcall-based macros. On 64-bit Windows, introduced with x64 Edition in 2005 and standardized in in 2006, these macros adapt to the unified x64 calling convention, which ignores distinctions like __stdcall or __cdecl in favor of a register-based fast-call model. In this scheme, the first four integer or pointer arguments pass via registers (RCX, RDX, R8, R9), floating-point via XMM registers, and excess arguments via the stack (caller-managed cleanup), with all functions—including those decorated with WINAPI, APIENTRY, or CALLBACK—conforming to this single ABI for seamless 64-bit operation. This shift eliminated legacy convention mismatches, enhancing performance and simplifying cross-architecture development.

Version and Platform Macros

The version and platform macros in windows.h and related Windows SDK headers enable developers to specify target operating system versions, architectures, and feature sets during , ensuring and conditional exposure of . These macros are typically defined in files like targetver.h or sdkddkver.h before including windows.h, and they influence preprocessor directives (#if) that guard version-specific declarations. By setting appropriate values, code can target minimum supported versions while avoiding deprecated or unavailable features on older systems. Core version macros include WINVER and _WIN32_WINNT, which define the minimum Windows version for API availability. WINVER sets the baseline for the entire application, such as 0x0500 for Windows 2000 or 0x0A00 for Windows 10 and later (including Windows 11). _WIN32_WINNT specifies the target version for API functions, using the same hexadecimal values but allowing finer control; for example, 0x0601 targets Windows 7, while 0x0A00 enables Windows 10/11 features like improved security APIs. An additional macro, _WIN32_WINDOWS, targets legacy Windows 9x/ME platforms, such as 0x0410 for Windows 98. These macros are often paired with NTDDI_VERSION for driver and kernel-mode development, providing granular control over service packs and builds; for instance, NTDDI_WIN10_CO (0x0A00000B) corresponds to Windows 10 version 21H2, and post-2021 SDKs extend support for Windows 11 via sub-versions under 0x0A00 without new major values. The following table summarizes representative values:
Windows VersionWINVER / _WIN32_WINNTExample NTDDI_VERSION
Windows 20000x0500N/A
0x0501N/A
0x06010x06010000
0x0A000x0A000000
Windows 10 21H20x0A000x0A00000B
0x0A00Varies by build (e.g., 0x0A00000C for 22H2)
Platform indicators distinguish between architectures and bit widths, facilitating cross-platform . _WIN32 is always defined as 1 for Win32 and later environments, including 32-bit and 64-bit on x86, x64, , and ARM64. _WIN64 is defined as 1 specifically for 64-bit compilations, such as x64 or ARM64 . Compiler-specific macros like _M_IX86 (defined as 600 for x86) and _M_AMD64 (defined as 100 for x64 or ARM64EC) provide details; ARM64EC, introduced post-2021 for extended compatibility on ARM64, shares the _WIN64 definition and uses _M_AMD64 for targeting hybrid execution environments. The _X86_ macro, often user-defined before including headers, signals x86 for conditional logic in SDK files. These indicators interact with macros in #if blocks to expose platform-appropriate types and functions, such as 64-bit pointers under _WIN64. Feature flags like NTDDI_VERSION extend to specific interfaces, particularly for drivers, by encoding major/minor versions, service packs, and builds in a 32-bit value (e.g., 0xMMmmppbb where MM is major, mm minor). This allows precise targeting of features like 's updated interfaces without altering core WINVER settings. Overall, these macros ensure that succeeds only for supported configurations, preventing runtime errors from unavailable APIs while promoting through conditional . As of November 2025, recent updates include support for 23H2 (NTDDI_VERSION 0x0A00000E) and 24H2 (0x0A00000F).

References

  1. [1]
    Using the Windows Headers - Win32 apps | Microsoft Learn
    Aug 19, 2020 · The header files for the Windows API enable you to create 32- and 64-bit applications. They include declarations for both Unicode and ANSI versions of the API.Visual C++ and the Windows... · Macros for Conditional...
  2. [2]
    Microsoft Win32 API Overview - Techs Helps
    Microsoft Win32 API Overview. Created: February 1994. Overview. The Microsoft Win32 Application Programming Interface (API) allows applications to exploit ...
  3. [3]
    Security and Identity - Win32 apps | Microsoft Learn
    Nov 10, 2020 · Develop more secure desktop apps by using Windows APIs and services. These APIs provide: Authentication; Authorization; Cryptography; Directory, ...Missing: NT 3.1
  4. [4]
    Shell and Shlwapi DLL Versions - Win32 apps - Microsoft Learn
    Jan 7, 2021 · This section describes how to determine which version of the Shell DLLs your application is running on and how to target your application for a specific ...
  5. [5]
    Take Advantage of New Windows XP Features in Your Apps Today
    Windows XP includes both improvements to the operating system and several new features that enhance the user experience.
  6. [6]
    Win32 and COM APIs for UWP apps - Windows - Microsoft Learn
    Jul 21, 2021 · This topic lists the Win32 APIs that are part of the UWP and that are implemented by all Windows 10 devices. For convenience, an umbrella ...Missing: integration | Show results with:integration
  7. [7]
    Update WINVER and _WIN32_WINNT - Microsoft Learn
    Jun 30, 2025 · The preprocessor macros WINVER and _WIN32_WINNT specify the minimum operating system version your code supports.
  8. [8]
    Module 1. Your First Windows Program - Win32 apps | Microsoft Learn
    Jun 13, 2022 · In this module, we will write a minimal Windows desktop program. All it does is create and show a blank window.<|control11|><|separator|>
  9. [9]
    Creating a Basic Winsock Application - Win32 apps | Microsoft Learn
    Jan 7, 2021 · h header file contains definitions introduced in the ... For historical reasons, the Windows.h header defaults to including the Winsock.<|control11|><|separator|>
  10. [10]
    XMMax template (DirectXMath.h) - Win32 apps | Microsoft Learn
    Mar 22, 2021 · To avoid conflicts with Windows headers with std::max, you need to #define NOMINMAX before you include Windows headers. Namespace: Use ...
  11. [11]
    Header files (C++) | Microsoft Learn
    Aug 3, 2021 · Typically, header files have an include guard or a #pragma once directive to ensure that they are not inserted multiple times into a single .cpp ...Example · Include guards
  12. [12]
    Windows SDK - Windows app development | Microsoft Developer
    Release to correspond with the Windows 11, version 24h2 public release. Windows 11, Build 10.0.26100 (released 5/22/2024). Initial release of the 10.0 ...
  13. [13]
    Mingw-w64 | Microsoft Learn
    Jan 10, 2024 · When building software for native windows environments, you must use a mingw subsystem of MSYS2, and install some packages (with a specific ...Missing: h | Show results with:h
  14. [14]
    Unicode Encoding Conversions with STL Strings and Win32 APIs
    A possible solution is to #define NOMINMAX before including <Windows.h>. This will prevent the definition of the min and max Windows-specific preprocessor ...<|separator|>
  15. [15]
    What is the difference if any...? - Microsoft Q&A
    Jul 30, 2025 · h" #define WIN32_LEAN_AND_MEAN #include <windows.h> etc. Then #include <unknwn.h> followed by the winrt headers. I noticed that this ...
  16. [16]
    TEXT macro (winnt.h) - Win32 apps - Microsoft Learn
    Jul 1, 2025 · Identifies a string as Unicode when UNICODE is defined by a preprocessor directive during compilation. Otherwise, the macro identifies a string ...
  17. [17]
    Enabling STRICT - Win32 apps | Microsoft Learn
    Feb 8, 2021 · Enabling STRICT redefines certain data types so that the compiler does not permit assignment from one type to another without an explicit cast.
  18. [18]
    [PDF] Rationale for International Standard - Programming Language - C
    7.1.5 Limits <float.h> and <limits.h> ... as ptrdiff_t, in the standard header <stddef.h>. Old code recompiled by a ...
  19. [19]
    Windef.h header - Win32 apps - Microsoft Learn
    Jan 23, 2023 · The POINTS structure defines the x- and y-coordinates of a point. RECT The RECT structure defines a rectangle by the coordinates of its upper- ...
  20. [20]
    Winbase.h header - Win32 apps | Microsoft Learn
    Jan 23, 2023 · Copies a source context structure (including any XState) onto an initialized destination context structure. The CopyFile function (winbase. h) ...Functions · Callback functions
  21. [21]
    Winnt.h header - Win32 apps | Microsoft Learn
    Feb 15, 2023 · In this module, you will learn about the differences and benefits of the file systems that Windows client supports. Last updated on 02/15/2023 ...
  22. [22]
    try-except statement - Microsoft Learn
    Jun 19, 2025 · In all other cases, it returns 1. <excpt.h> defines some alternate names for these intrinsics: GetExceptionCode is equivalent to _exception_code.
  23. [23]
    The Tools - Win32 apps | Microsoft Learn
    Aug 23, 2019 · The Windows header files have been modified so that they can be used for both 32- and 64-bit code. The new 64-bit types and macros are defined ...
  24. [24]
    Winuser.h header - Win32 apps | Microsoft Learn
    Feb 16, 2023 · Enables you to produce special effects when showing or hiding windows. There are four types of animation:_roll, slide, collapse or expand, and alpha-blended ...Functions · Callback functions
  25. [25]
    Winsock2.h header - Win32 apps | Microsoft Learn
    Jan 24, 2023 · The FD_SET macro (winsock2.h) is used by Windows Sockets (Winsock) functions and service providers to place sockets into a set. gethostbyaddr
  26. [26]
    Winreg.h header - Win32 apps - Microsoft Learn
    Jan 23, 2023 · Maps a predefined registry key to the specified registry key. RegQueryInfoKeyA. Retrieves information about the specified registry key. (ANSI).
  27. [27]
    Bcrypt.h header - Win32 apps - Microsoft Learn
    Jul 22, 2025 · Initializes a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure for use in calls to BCryptEncrypt and BCryptDecrypt functions.
  28. [28]
    COM Technical Overview - Win32 apps - Microsoft Learn
    Jan 6, 2021 · The Microsoft Component Object Model (COM) defines a binary interoperability standard for creating reusable software libraries that interact at run time.Introduction To Com · The Client/server Model · Storage And Stream ObjectsMissing: compatibility | Show results with:compatibility
  29. [29]
    Ole2.h header - Win32 apps - Microsoft Learn
    Jan 24, 2023 · The OleCreate function (ole2.h) creates an embedded object identified by a CLSID. It can implement the menu item that allows the end user to insert an object.Missing: objbase. oleauto.
  30. [30]
    Oleauto.h header - Win32 apps - Microsoft Learn
    Jan 24, 2023 · This header is used by Automation. For more information, see: oleauto.h contains the following programming interfaces:Missing: objbase. documentation
  31. [31]
    Interprocess communications - Win32 apps | Microsoft Learn
    Feb 13, 2024 · This enables the application to be extended by any other application that uses OLE. COM objects provide access to an object's data through one ...
  32. [32]
    MFC ActiveX Controls | Microsoft Learn
    Aug 3, 2021 · An ActiveX control is a reusable software component based on the Component Object Model (COM) that supports a wide variety of OLE functionality ...
  33. [33]
    Windows 3.1: Twenty-five years later, it's still a Microsoft milestone
    Apr 6, 2017 · Windows 3.1 introduced a systemwide means of embedding and linking different types of files together called OLE, short for Object Linking and ...
  34. [34]
    Why did the original design of COM on Windows rely on the Registry?
    May 4, 2020 · COM was introduced together with OLE 2. OLE stands for Object Linking and Embedding, and like others said, it was an interprocess communication ...
  35. [35]
    The various ways of moving between C++/WinRT and classic COM
    Aug 30, 2021 · A case where you may find yourself needing to move between columns is when you want to use a classic COM interface exposed by a Windows Runtime ...Missing: OLE | Show results with:OLE
  36. [36]
    COM Server and OLE Document support for the Desktop Bridge
    Apr 13, 2017 · The Windows 10 Creators Update adds out-of-process (OOP) COM and OLE support for apps on the Desktop Bridge – aka Packaged COM.Missing: headers WinRT
  37. [37]
    Windows Data Types (BaseTsd.h) - Win32 apps - Microsoft Learn
    Nov 7, 2024 · The data types supported by Windows are used to define function return values, function and message parameters, and structure members.
  38. [38]
    __stdcall | Microsoft Learn
    Feb 10, 2025 · The __stdcall calling convention is used to call Win32 API functions. The callee cleans the stack, so the compiler makes vararg functions __cdecl.
  39. [39]
    __fastcall | Microsoft Learn
    Sep 15, 2023 · The __fastcall calling convention specifies that arguments to functions are to be passed in registers, when possible. This calling convention ...
  40. [40]
    __cdecl | Microsoft Learn
    Aug 3, 2021 · In x64 code, use __cdecl to override the /Gv compiler option and use the default x64 calling convention. For non-static class functions, if the ...Missing: bit | Show results with:bit
  41. [41]
    x64 Calling Convention | Microsoft Learn
    Jul 25, 2025 · This article describes the standard processes and conventions that one function (the caller) uses to make calls into another function (the callee) in x64 code.Calling convention defaults · Alignment
  42. [42]
    Predefined macros | Microsoft Learn
    Aug 19, 2016 · Lists and describes the Microsoft C++ compiler predefined preprocessor macros.