C++/WinRT
# C++/WinRT

C++/WinRT es una librería en C++ estándar (C++17) que permite el acceso a la plataforma Windows Runtime y las nuevas APIs de Windows. Fueron creadas originalmente por Kenny Kerr en 2015 e incluidas como parte del Microsoft Windows SDK en la versión 10.0.17134.0 (Windows 10, versión 1803).

Estas librerías son la manera recomendada por Microsoft para consumir y acceder a las APIs de Windows Runtime en C++, sustituyendo así tanto a las librerías Windows Runtime C++ Template Library (WRL), como a la extensión del lenguaje C++/CX.

## Introducción

Las APIs de programación de WinRT (Windows Runtime) están basadas en COM (Component Object Model) y han sido diseñadas para ser consumidas a través de proyecciones en distintos lenguajes (p.e. C# o Javascript). El objetivo de cada proyección es ocultar los detalles de COM y proporcionar una experiencia de programación más natural adaptada a cada lenguaje y sus características.

Las librerías C++/WinRT son una proyección al lenguaje C++ (concretamente C++17). Están implementadas como librerías basadas en ficheros de cabecera (.h) y diseñadas para poder acceder y consumir las APIs de Windows Runtime usando cualquier compilador compatible con C++17.

### Programa Hola mundo

Un programa mínimo de ejemplo Hola mundo escrito en C++/WinRT podría ser el siguiente:

Como puede verse, se trata de código C++ estándar, en el que se utilizan de manera directa tanto tipos como funciones de la API de Windows Runtime.

### Escenarios de uso

A la hora de desarrollar aplicaciones, tres son los principales escenarios con los que podemos sacar ventaja del uso de C++/WinRT:

* Consumir APIs y tipos de Windows Runtime
* Producir APIs y tipos de Windows Runtime
* Desarrollo de aplicaciones XAML
