Um exemplo básico do C++/WinRT Biblioteca de interface do usuário do Windows 2 (UWP)

Este tópico explica o processo de adição de suporte básico para o Biblioteca de interface do usuário do Windows (WinUI) ao seu projeto UWP do C++/WinRT. Especificamente, este tópico lida com o WinUI 2, que é para aplicativos UWP. Para aplicativos da área de trabalho, há o WinUI 3. Aliás, WinUI é escrito em C++/WinRT.

Important

Para aplicativos da área de trabalho, o SDK do Aplicativo Windows fornece Biblioteca de interface do usuário do Windows (WinUI) 3. O WinUI 3 não foi projetado para funcionar com as instruções passo a passo deste tópico, que se destinam à UWP. Consulte também Migrar da UWP para o SDK do Aplicativo Windows.

Note

O kit de ferramentas Biblioteca de interface do usuário do Windows (WinUI) está disponível como pacotes NuGet que você pode adicionar a qualquer projeto existente ou novo usando Visual Studio, como veremos neste tópico. Para obter mais informações de plano de fundo, configuração e suporte, consulte Introdução ao Biblioteca de interface do usuário do Windows.

Criar um aplicativo em branco (HelloWinUICppWinRT)

Em Visual Studio, crie um novo projeto UWP usando o modelo de projeto Aplicativo em Branco (C++/WinRT) (para aplicativos de desktop do WinUI 3, use o modelo Aplicativo em Branco, Empacotado (WinUI 3 em Desktop)). Verifique se você está usando o modelo (C++/WinRT) e não o modelo (Universal Windows).

Defina o nome do novo projeto como HelloWinUICppWinRT e (para que sua estrutura de pastas corresponda ao passo a passo) desmarque a solução Place e o projeto no mesmo diretório.

Instale o pacote NuGet Microsoft.UI.Xaml

Clique em Project>Manage Pacotes NuGet...>Navegue, digite ou cole Microsoft. UI. Xaml na caixa de pesquisa, selecione o item nos resultados da pesquisa e clique em Instalar para instalar o pacote em seu project (você também verá um prompt de contrato de licença). Tenha cuidado para instalar apenas o pacote Microsoft.UI.Xaml, e não Microsoft.UI.Xaml.Core.Direct.

Declarar recursos do aplicativo WinUI

Abra App.xaml e cole a marcação a seguir entre as tags Application de abertura e fechamento existentes.

<Application.Resources>
    <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls"/>
</Application.Resources>

Adicionar um controle WinUI ao MainPage

Em seguida, abra MainPage.xaml. Na tag Page de abertura existente, há algumas declarações de namespace XML. Adicione a declaração xmlns:muxc="using:Microsoft.UI.Xaml.Controls"de namespace xml. Em seguida, cole o código de marcação a seguir entre as tags de abertura e fechamento Page existentes, substituindo o elemento StackPanel existente.

<muxc:NavigationView PaneTitle="Welcome">
    <TextBlock Text="Hello, World!" VerticalAlignment="Center" HorizontalAlignment="Center" Style="{StaticResource TitleTextBlockStyle}"/>
</muxc:NavigationView>

Edite pch.h, conforme necessário

Quando você adiciona um pacote NuGet a um projeto em C++/WinRT (como o pacote Microsoft.UI.Xaml, que você adicionou anteriormente) e compila o projeto, as ferramentas geram um conjunto de arquivos de cabeçalho de projeção na pasta \Generated Files\winrt do seu projeto. Se você seguiu o passo a passo, agora terá uma \HelloWinUICppWinRT\HelloWinUICppWinRT\Generated Files\winrt pasta. Para colocar esses arquivos de cabeçalhos em seu projeto, para que as referências a esses novos tipos sejam resolvidas, você pode entrar no arquivo de cabeçalho pré-compilado (normalmente pch.h) e incluí-los.

Você precisa incluir apenas os cabeçalhos que correspondem aos tipos que você usa. Mas aqui está um exemplo que inclui todos os arquivos de cabeçalho gerados do pacote Microsoft.UI.Xaml.

// pch.h
...
#include "winrt/Microsoft.UI.Xaml.Automation.Peers.h"
#include "winrt/Microsoft.UI.Xaml.Controls.h"
#include "winrt/Microsoft.UI.Xaml.Controls.Primitives.h"
#include "winrt/Microsoft.UI.Xaml.Media.h"
#include "winrt/Microsoft.UI.Xaml.XamlTypeInfo.h"
...

Editar MainPage.cpp

Em MainPage.cpp, exclua o código dentro da implementação de MainPage::ClickHandler, já que myButton não está mais no markup XAML.

Agora você pode compilar e executar o projeto.

Captura de tela da Biblioteca de Interface do Usuário do Windows C++/WinRT simples