Biblioteca de plantillas de Windows Runtime C++ (WRL)

La biblioteca de plantillas de C++ de Windows Runtime (WRL) es una biblioteca de plantillas que proporciona una manera de bajo nivel de crear y usar componentes de Windows Runtime.

Nota

WRL ahora se reemplaza por C++/WinRT, una proyección estándar del lenguaje C++17 para Windows Runtime API. C++/WinRT está disponible en Windows SDK a partir de la versión 1803 (10.0.17134.0). C++/WinRT se implementa completamente en archivos de encabezado y está diseñado para proporcionar acceso de primera clase a la API Windows moderna.

Con C++/WinRT, puede usar y crear API de runtime Windows mediante cualquier compilador de C++17 compatible con los estándares. C++/WinRT normalmente funciona mejor y genera archivos binarios más pequeños que cualquier otra opción de lenguaje para Windows Runtime. Seguiremos admitiendo C++/CX y WRL, pero recomendamos encarecidamente que las nuevas aplicaciones usen C++/WinRT. Para obtener más información, consulte C++/WinRT.

Ventajas

La Windows plantilla de C++ en tiempo de ejecución le permite implementar y consumir componentes del Modelo de objetos componentes (COM) más fácilmente. Proporciona técnicas de mantenimiento como el recuento de referencias para administrar la duración de los objetos y probar los valores HRESULT para determinar si una operación se ha podido realizar correctamente o no. Para usar correctamente la biblioteca Windows runtime de C++, debe seguir cuidadosamente estas reglas y técnicas.

C++/CX es una manera de usar componentes de runtime basados en lenguajes de alto nivel Windows runtime. Tanto la biblioteca de plantillas de C++ de Windows Runtime como C++/CX simplifican la escritura de código para Windows Runtime mediante la realización automática de tareas de mantenimiento en su nombre.

La biblioteca Windows plantillas de C++ en tiempo de ejecución y C++/CX proporcionan diferentes ventajas. Estos son algunos de los motivos por los que puede que desee usar la biblioteca de plantillas de C++ Windows runtime en lugar de C++/CX:

  • Windows Runtime C++ Template Library agrega poca abstracción sobre la interfaz binaria de aplicación (ABI) de Windows Runtime, lo que le ofrece la capacidad de controlar el código subyacente para crear o consumir mejor las API de runtime de Windows.

  • C++/CX representa valores HRESULT COM como excepciones. Si ha heredado una base de código que usa COM o una que no usa excepciones, es posible que encuentre que la biblioteca de plantillas de C++ en tiempo de ejecución de Windows es una manera más natural de trabajar con el runtime de Windows porque no tiene que usar excepciones.

    Nota

    La Windows plantilla de C++ en tiempo de ejecución usa valores HRESULT y no inicia excepciones. Además, la biblioteca de plantillas de C++ de Windows Runtime usa punteros inteligentes y el patrón RAII para ayudar a garantizar que los objetos se destruyen correctamente cuando el código de la aplicación produce una excepción. Para obtener más información sobre los punteros inteligentes y RAII, vea Smart Pointers and Objects Own Resources (RAII).

  • El propósito y el diseño de la biblioteca de plantillas de C++ de Windows Runtime se inspira en Active Template Library (ATL), que es un conjunto de clases de C++ basadas en plantillas que simplifican la programación de objetos COM. Dado que Windows Runtime C++ Template Library usa C++ estándar para encapsular el entorno de ejecución de Windows, puede portabilidad e interacción con muchos componentes COM existentes escritos en ATL en Windows Runtime. Si ya conoce ATL, es posible que le resulte más fácil programar Windows biblioteca de plantillas de C++ en tiempo de ejecución.

Introducción

Estos son algunos recursos que pueden ayudarle a trabajar con la biblioteca de plantillas de C++ Windows runtime de inmediato.

Cómo: Activar y usar un componente de Windows Runtime
Muestra cómo usar la biblioteca de Windows runtime de C++ para inicializar el entorno de ejecución de Windows y activar y usar un componente Windows Runtime.

Cómo: Completar operaciones asincrónicas
Muestra cómo usar la biblioteca de plantillas de C++ Windows runtime para iniciar operaciones asincrónicas y realizar el trabajo cuando se completan las operaciones.

Cómo: Controlar eventos
Muestra cómo usar la biblioteca de plantillas de C++ Windows runtime para suscribirse y controlar los eventos de un objeto Windows runtime.

Tutorial: Crear una aplicación de UWP mediante WRL y Media Foundation
Obtén información sobre cómo crear una aplicación para UWP que usa Microsoft Media Foundation.

Cómo: Crear un componente COM clásico
Muestra cómo usar la biblioteca de plantillas de C++ de Windows Runtime para crear un componente COM básico y una manera básica de registrar y consumir el componente COM desde una aplicación de escritorio.

Cómo: Crear instancias de componentes WRL directamente
Obtenga información sobre cómo utilizar las funciones Microsoft::WRL::Make y Microsoft::WRL::Details::MakeAndInitialize para crear instancias de un componente a partir del módulo que lo define.

Procedimiento Usar winmdidl.exe y midlrt.exe para crear archivos .h desde metadatos de Windows
Muestra cómo utilizar componentes personalizados de Windows en tiempo de ejecución desde la WRL mediante la creación de un archivo IDL a partir de los metadatos .winmd.

Tutorial: Conexión mediante tareas y solicitudes HTTP XML
Muestra cómo usar las interfaces IXMLHTTPRequest2 e IXMLHTTPRequest2Callback junto con tareas para enviar solicitudes HTTP GET y POST a un servicio web en una aplicación para UWP.

Ejemplo de Bing Maps Trip Optimizer
Usa la clase que se define en Tutorial: Conectarse mediante tareas y solicitudes HTTP XML en el contexto de HttpRequest una aplicación para UWP completa. HttpRequest

Ejemplo de creación de un componente DLL de Windows Runtime con C++
Muestra cómo usar la biblioteca de plantillas de C++ de Windows Runtime para crear un componente DLL en proceso y consumirlo desde C++/CX, JavaScript y C#.

Ejemplo del juego Marble Maze con DirectX
Muestra cómo usar la biblioteca de plantillas de C++ de Windows Runtime para administrar la duración de los componentes COM como DirectX y Media Foundation en el contexto de un juego 3D completo.

Notificaciones del sistema desde aplicaciones de escritorio
Muestra cómo enviar notificaciones del sistema desde una aplicación de escritorio.

Windows biblioteca de plantillas de C++ en tiempo de ejecución en comparación con ATL

Windows biblioteca de plantillas de C++ en tiempo de ejecución se parece a Active Template Library (ATL) porque se puede usar para crear objetos COM pequeños y rápidos. Windows biblioteca de plantillas de C++ en tiempo de ejecución y ATL también comparten conceptos como la definición de objetos en módulos, el registro explícito de interfaces y la creación abierta de objetos mediante generadores. Es posible que esté familiarizado con Windows biblioteca de plantillas de C++ en tiempo de ejecución si está familiarizado con ATL.

Windows biblioteca de plantillas de C++ en tiempo de ejecución admite la funcionalidad COM necesaria para las aplicaciones para UWP. Por consiguiente, y a diferencia de ATL, omite la compatibilidad directa para características COM como:

  • aggregation

  • implementaciones estándar

  • interfaces duales (IDispatch)

  • interfaces de enumerador estándar

  • puntos de conexión

  • interfaces divisibles

  • incrustación OLE

  • Controles ActiveX

  • COM+

Conceptos

Windows biblioteca de plantillas de C++ en tiempo de ejecución proporciona tipos que representan algunos conceptos básicos. En las siguientes secciones se describen estos tipos.

ComPtr

ComPtr es un tipo de puntero inteligente que representa la interfaz especificada por el parámetro de plantilla. Utilice ComPtr para declarar una variable que pueda tener acceso a los miembros de un objeto que se derive de la interfaz. ComPtr mantiene automáticamente un recuento de referencias para el puntero de la interfaz subyacente y la libera cuando el recuento de referencias llega a cero.

RuntimeClass

RuntimeClass representa una clase de la que se ha creado una instancia que hereda un conjunto de interfaces especificadas. Un objeto puede proporcionar una combinación de compatibilidad con una o varias interfaces COM Windows runtime o una RuntimeClass referencia débil a un componente.

Módulo

Module representa una colección de objetos relacionados. Un objeto Module administra los generadores de clases, que crean objetos, y el registro, que habilita otras aplicaciones para utilizar un objeto.

Devolución de llamada

La función Callback crea un objeto cuya función miembro es un controlador de eventos (un método de devolución de llamada). Utilice la función Callback para escribir operaciones asincrónicas.

EventSource

EventSource se utiliza para administrar los controladores de eventos delegados . Use Windows biblioteca de plantillas de C++ en tiempo de ejecución para implementar un delegado y para EventSource agregar, quitar e invocar delegados.

AsyncBase

AsyncBase proporciona métodos virtuales que representan el modelo de programación asincrónica Windows Runtime. Invalide los miembros de esta clase para crear una clase personalizada que pueda iniciar, detener o comprobar el progreso de una operación asincrónica.

FtmBase

FtmBase representa un objeto de cálculo de referencias con subprocesamiento libre. FtmBase crea una tabla de interfaz global (GIT) y ayuda a administrar los objetos proxy y de cálculo de referencias.

WeakRef

WeakRef es un tipo puntero inteligente que representa una referencia débily que hace referencia a un objeto al que se puede obtener o no acceso. Un objeto solo lo puede usar el entorno Windows tiempo de ejecución WeakRef y no com clásico.

Un objeto WeakRef normalmente representa un objeto cuya existencia se controla mediante una aplicación o un subproceso externo. Por ejemplo, un objeto WeakRef puede hacer referencia a un objeto de archivo. Cuando se abre el archivo, WeakRef es válido y se puede tener acceso al archivo de referencia. Pero cuando se cierra el archivo, WeakRef no es válido y no se tiene acceso al archivo.

API clave por categoría
Resalta los tipos, funciones y macros Windows biblioteca de plantillas de C++ en tiempo de ejecución.

Referencia
Contiene información de referencia para la biblioteca de plantillas Windows runtime de C++.

Referencia rápida (C++/CX)
Describe brevemente las características de C++/CX que admiten Windows runtime.

Usar los componentes de Windows Runtime en Visual C++
Muestra cómo usar C++/CX para crear un componente básico Windows runtime.