C++/CX Language Reference
C++/CX is a set of extensions to the C++ language that enable the creation of Windows apps and Windows Runtime components in an idiom that is as close as possible to modern C++. Use C++/CX to write Windows apps and components in native code that easily interact with Visual C#, Visual Basic, and JavaScript, and other languages that support the Windows Runtime. In those rare cases that require direct access to the raw COM interfaces, or non-exceptional code, you can use the Windows Runtime C++ Template Library (WRL).
Note
C++/WinRT is the recommended alternative to C++/CX. It is a new, standard C++17 language projection for Windows Runtime APIs, available in the latest Windows SDK from version 1803 (10.0.17134.0) onward. C++/WinRT is implemented entirely in header files, and designed to provide you with first-class access to the modern Windows API.
With C++/WinRT, you can both consume and author Windows Runtime APIs using any standards-conformant C++17 compiler. C++/WinRT typically performs better and produces smaller binaries than any other language option for the Windows Runtime. We will continue to support C++/CX and WRL, but highly recommend that new applications use C++/WinRT. For more information, see C++/WinRT.
By using C++/CX, you can create:
C++ Universal Windows Platform (UWP) apps that use XAML to define the user interface and use the native stack. For more information, see Create a "hello world" app in C++ (UWP).
C++ Windows Runtime components that can be consumed by JavaScript-based Windows apps. For more information, see Creating Windows Runtime Components in C++.
Windows DirectX games and graphics-intensive apps. For more information, see Create a simple UWP Game with DirectX.
Related articles
Link | Description |
---|---|
Quick Reference | Table of keywords and operators for C++/CX. |
Type System | Describes basic C++/CX types and programming constructs, and how to utilize C++/CX to consume and create Windows Runtime types. |
Building apps and libraries | Discusses how to use the IDE to build apps and link to static libraries and DLLs. |
Interoperating with Other Languages | Discusses how components that are written by using C++/CX can be used with components that are written in JavaScript, any managed language, or the Windows Runtime C++ Template Library. |
Threading and Marshaling | Discusses how to specify the threading and marshaling behavior of components that you create. |
Namespaces Reference | Reference documentation for the default namespace, the Platform namespace, Platform::Collections, and related namespaces. |
CRT functions not supported in Universal Windows Platform apps | Lists the CRT functions that are not available for use in Windows Runtime apps. |
Get started with Windows apps | Provides high-level guidance about Windows UWP apps and links to more information. |
C++/CX Part 0 of [n]: An Introduction C++/CX Part 1 of [n]: A Simple Class C++/CX Part 2 of [n]: Types That Wear Hats C++/CX Part 3 of [n]: Under Construction C++/CX Part 4 of [n]: Static Member Functions |
An introductory blog series on C++/CX. |
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for