Biblioteca de Modelos C++ do Tempo de Execução do Windows (WRL)
O Biblioteca em Tempo de Execução C++ do Tempo de Execução do Windows (WRL) é uma biblioteca de modelo que fornece uma maneira de baixo nível de criar e usar componentes de Tempo de Execução do Windows.
Benefícios
O WRL permite que você implemente e utilize os componentes do Component Object Model (COM) de maneira mais fácil. Fornece técnicas domésticas, como contagem de referência para gerenciar o tempo de vida dos objetos e testar os valores de HRESULT para determinar se uma operação foi bem-sucedida ou mal-sucedida. Para usar com êxito WRL, você deve seguir cuidadosamente essas regras e técnicas.
O Extensões de componentes Visual C++ (C++/CX) é uma maneira de alto nível, com base na linguagem de usar componentes de Tempo de Execução do Windows. WRL e C++/CX simplificam a escrita de código para o Tempo de Execução do Windows executando automaticamente as tarefas domésticas em seu nome.
O WRL e C++/CX fornecem benefícios diferentes. Veja alguns motivos pelos quais você pode desejar usar WRL em vez de C++/CX:
WRL adiciona uma pequena abstração sobre a interface de binária de aplicativo (ABI) do Tempo de Execução do Windows, oferecendo a capacidade de controlar o código subjacente para criar ou consumir melhor as APIs do Tempo de Execução do Windows.
C++/CX representa os valores COM de HRESULT como exceções. Se você herdou uma base de código que usa COM, ou uma que não usa exceções, você pode achar que WRL é uma maneira mais natural de trabalhar com o Tempo de Execução do Windows porque você não precisa usar exceções.
Dica
O WRL usa valores HRESULT e não lança exceções.Além disso, o WRL usa ponteiros inteligentes e o padrão RAII para ajudar a garantir que os objetos sejam destruídos corretamente quando o código do aplicativo lançar uma exceção.Para obter mais informações sobre ponteiros inteligentes e RAII, consulte Ponteiros inteligentes (C++ moderno) e Recursos de objetos próprios (RAII).
A finalidade e o design de WRL são inspirados pela Biblioteca de modelo ativo (ATL), que é um conjunto de classes do C++ com base no modelo que simplificam a programação de objetos COM. Como o WRL usa o C++ padrão para envolver Tempo de Execução do Windows, você pode mover e interagir mais facilmente com vários componentes COM existentes escritos em ATL para o Tempo de Execução do Windows. Se você já conhecer o ATL, você poderá achar que a programação de WRL é mais fácil.
Guia de Introdução
Eis alguns recursos que podem ajudá-lo a trabalhar com WRL imediatamente.
A Biblioteca em Tempo de Execução do Windows (WRL)
Nesta exibição de Channel 9, para saber mais sobre como WRL ajuda você a escrever aplicativos de Windows Store e como criar e consumir os componentes de Tempo de Execução do Windows.Como ativar e usar um componente de Tempo de Execução do Windows com WRL
Mostra como usar o WRL para inicializar o Tempo de Execução do Windows e para ativar e usar um componente Tempo de Execução do Windows.Como executar operações assíncronas com WRL
Mostra como usar o WRL para iniciar operações assíncronas e executar trabalho quando as operações concluírem.Como manipular eventos com WRL
Mostra como usar o WRL para assinar e manipular os eventos de um objeto Tempo de Execução do Windows.Instruções passo a passo: criando um componente básico de Tempo de Execução do Windows com WRL
Mostra como usar o WRL para criar um componente básico do Tempo de Execução do Windows que adiciona dois números. Também demonstra como gerar eventos e usar o componente de um aplicativo de Windows Store que usa JavaScript.Instruções passo a passo: criando um aplicativo da Windows Store usando WRL e Media Foundation
Aprenda como criar um aplicativo de Windows Store que usa o Microsoft Media Foundation.Como criar um componente COM clássico com WRL
Mostra como usar o WRL para criar um componente básico COM e uma forma básica de registrar e consumir o componente COM de um aplicativo para área de trabalho.Como instanciar componentes WRL diretamente
Aprenda como usar as funções de Microsoft::WRL::Make e de Microsoft::WRL::Details::MakeAndInitialize para instanciar um componente do módulo que o define.Como usar winmdidl.exe e midlrt.exe para criar arquivos .h a partir de metadados do Windows
Mostra como consumir componentes personalizados do Tempo de Execução do Windows do WRL criando um arquivo de IDL de metadados .winmd.Instruções passo a passo: conexão usando tarefas e solicitações HTTP XML
Mostra como usar IXMLHTTPRequest2 e IXMLHTTPRequest2Callback interface junto com tarefas enviar o HTTP GET e POST solicitações a um serviço da Web em um aplicativo do Windows Store.Exemplo de Otimizador de viagem do Mapas Bing
Usa a classe de HttpRequest que é definida no Instruções passo a passo: conexão usando tarefas e solicitações HTTP XML no contexto de um aplicativo completo do Windows Store.Criando um componente de DLL de Tempo de Execução do Windows com o exemplo de C++
Mostra como usar o WRL para criar um componente DLL em processo e consuma-o no C++/CX, JavaScript e C#.Exemplo do jogo de labirinto de mármore do DirectX
Demonstra como usar o WRL para gerenciar o tempo de vida de componentes COM, como o DirectX e o Media Foundation no contexto de um jogo 3D completo.Enviando notificações de brinde do exemplo de aplicativos para área de trabalho
Demonstra como usar o WRL para trabalhar com notificações de brinde de um aplicativo de área de trabalho.
WRL Comparado com ATL
WRL é semelhante à biblioteca de modelos ativos (ATL) porque você pode usá-lo para criar objetos COM pequenos e rápidos. WRL e ATL também compartilham conceitos, como a definição de objetos em módulos, registro explícito de interfaces, e a criação aberta de objetos usando fábricas. Você pode se sentir confortável com WRL se estiver familiarizado com o ATL.
WRL oferece suporte à funcionalidade COM que é necessária para aplicativos do Windows Store. Portanto, difere do ATL porque omite suporte direto para recursos COM como:
agregação
implementações fixas
interfaces duplas (IDispatch)
interfaces do enumerador padrão
pontos de conexão
Interfaces destacáveis
Inserção OLE
Controles ActiveX
COM+
Conceitos
WRL fornece tipos que representam alguns conceitos básicos. As seções a seguir descrevem esses tipos.
ComPtr
ComPtr é um tipo de ponteiro inteligente que representa a interface especificada pelo parâmetro de modelo. Use ComPtr para declarar uma variável que pode acessar os membros de um objeto que é derivado da interface. ComPtr automaticamente mantém uma contagem de referência para o ponteiro subjacente da interface e libera a interface quando a contagem de referência chega a zero.
RuntimeClass
RuntimeClass representa uma classe instanciada que herda um conjunto de interfaces especificadas. Um objeto de RuntimeClass pode fornecer uma combinação de suporte para uma ou mais interfaces COM de Tempo de Execução do Windows, ou uma referência fraca a um componente.
Module
O módulo representa uma coleção de objetos relacionados. Um objeto de Module gerencia as fábricas de classe, que criam objetos, e o registro, que permite que outros aplicativos usem um objeto.
Retorno de chamada
A função Retorno de chamada cria um objeto cuja função de membro é um manipulador de eventos (um método de retorno). Use a função Callback para gravar operações assíncronas.
EventSource
EventSource é usado para gerenciar manipuladores de eventos de representante. Use WRL para implementar um representante e use EventSource para adicionar, remover e invocar representantes.
AsyncBase
AsyncBase fornece os métodos virtuais que representam o modelo de programação assíncrona de Tempo de Execução do Windows. Substitua os membros nesta classe para criar uma classe personalizada que pode iniciar, parar, ou verificar o progresso de uma operação assíncrona.
FtmBase
FtmBase representa um objeto de segmentação livre de marshaler. FtmBase cria uma tabela global (GIT) de interface, e ajuda a gerenciar objetos de empacotamento e de proxy.
WeakRef
WeakRef é um tipo de ponteiro inteligente que representa uma referência fraca, que faz referência a um objeto que pode ou não ser acessível. Um objeto de WeakRef pode ser usado somente por Tempo de Execução do Windows, e não pelo COM clássico.
Um objeto de WeakRef representa normalmente um objeto cuja existência é controlada por um segmento ou por um aplicativo externo. Por exemplo, um objeto WeakRef pode fazer referência a um objeto de arquivo. Quando o arquivo está aberto, WeakRef é válido e o arquivo referenciado fica acessível. Mas quando o arquivo está fechado, o WeakRef é inválido e o arquivo não é acessível.
Tópicos relacionados
Descreve como acessar o modelo de projeto de biblioteca de classes de WRL. Este modelo ajuda a simplificar a tarefa de usar o Visual Studio para criar componentes de Tempo de Execução do Windows. |
|
Realça tipos, funções, e macros primárias de WRL. |
|
Contém informações de referência para o WRL. |
|
Referência rápida (Tempo de Execução do Windows e Visual C++) |
Descreve rapidamente os recursos de C++/CX que suportam o Tempo de Execução do Windows. |
Usando os componentes de Tempo de Execução do Windows no Visual C++ |
Mostra como usar C++/CX para criar um componente básico Tempo de Execução do Windows. |