Exemple de bibliothèque d’IU Windows C++/WinRT simpleA simple C++/WinRT Windows UI Library example

Cette rubrique vous guide dans le processus d’ajout d’une prise en charge simple de la bibliothèque d’IU Windows (WinUI) dans votre projet C++/WinRT.This topic walks you through the process of adding simple support for the Windows UI (WinUI) Library to your C++/WinRT project. Par ailleurs, la bibliothèque d'IU Windows est elle-même écrite en C++/WinRT.Incidentally, the Windows UI Library is itself written in C++/WinRT.

Notes

Le kit d’outils de la bibliothèque d’IU Windows (WinUI) est disponible sous forme de packages NuGet que vous pouvez ajouter à un projet existant ou nouveau à l’aide de Visual Studio, comme nous le verrons dans cette rubrique.The Windows UI (WinUI) Library toolkit is available as NuGet packages that you can add to any existing or new project using Visual Studio, as we'll see in this topic. Pour plus d’informations sur l’arrière-plan, la configuration et la prise en charge, consultez Prise en main de la bibliothèque d’IU Windows.For more background, setup, and support info, see Getting started with the Windows UI Library.

Créer une application vide (HelloWinUICppWinRT)Create a Blank App (HelloWinUICppWinRT)

Dans Visual Studio, créez un projet à l’aide du modèle de projet Blank App (C++/WinRT) .In Visual Studio, create a new project using the Blank App (C++/WinRT) project template. Veillez à utiliser le modèle (C++/WinRT) , et non le modèle (Windows universel) .Make sure that you're using the (C++/WinRT) template, and not the (Universal Windows) one.

Définissez le nom du nouveau projet avec HelloWinUICppWinRT et (pour que votre structure de dossiers corresponde à la procédure pas à pas) décochez Placer la solution et le projet dans le même répertoire.Set the name of the new project to HelloWinUICppWinRT, and (so that your folder structure will match the walkthrough) uncheck Place solution and project in the same directory.

Installer le package NuGet Microsoft.UI.XamlInstall the Microsoft.UI.Xaml NuGet package

Cliquez sur Projet > Gérer des packages NuGet... > Parcourir, tapez ou collez Microsoft.UI.Xaml dans la zone de recherche, sélectionnez l’élément dans les résultats de la recherche, puis cliquez sur Installer pour installer le package correspondant à votre projet (une invite Contrat de licence s’affichera également).Click Project > Manage NuGet Packages... > Browse, type or paste Microsoft.UI.Xaml in the search box, select the item in search results, and then click Install to install the package into your project (you'll also see a license agreement prompt). Veillez à installer uniquement le package Microsoft.UI.Xaml et non Microsoft.UI.Xaml.Core.Direct.Be careful to install only the Microsoft.UI.Xaml package, and not Microsoft.UI.Xaml.Core.Direct.

Déclarer des ressources d’application WinUIDeclare WinUI application resources

Ouvrez App.xaml et collez la marque suivante entre les balises Application d’ouverture et de fermeture existantes.Open App.xaml and paste the following markup between the existing opening and closing Application tags.

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

Ajouter un contrôle WinUI à MainPageAdd a WinUI control to MainPage

Ensuite, ouvrez MainPage.xaml.Next, open MainPage.xaml. Dans la balise Page d’ouverture existante, il existe des déclarations d’espace de noms XML.In the existing opening Page tag there are some xml namespace declarations. Ajoutez la déclaration d’espace de noms XML xmlns:muxc="using:Microsoft.UI.Xaml.Controls".Add the xml namespace declaration xmlns:muxc="using:Microsoft.UI.Xaml.Controls". Collez ensuite la marque suivante entre les balises Page d’ouverture et de fermeture existantes en remplaçant l’élément StackPanel existant.Then, paste the following markup between the existing opening and closing Page tags, overwriting the existing StackPanel element.

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

Modifier pch.h, si nécessaireEdit pch.h, as necessary

Lorsque vous ajoutez un package NuGet à un projet C++/WinRT (tel que le package Microsoft.UI.Xaml, que vous avez précédemment ajouté) et créer le projet, les outils génèrent un ensemble de fichiers d’en-tête de projection dans le dossier \Generated Files\winrt de votre projet.When you add a NuGet package to a C++/WinRT project (such as the Microsoft.UI.Xaml package, which you added earlier), and build the project, the tooling generates a set of projection header files in your project's \Generated Files\winrt folder. Si vous avez suivi la procédure pas à pas, vous disposez maintenant d’un dossier \HelloWinUICppWinRT\HelloWinUICppWinRT\Generated Files\winrt.If you've followed along with the walkthrough, you'll now have a \HelloWinUICppWinRT\HelloWinUICppWinRT\Generated Files\winrt folder. Pour placer ces fichiers d’en-têtes dans votre projet et permettre la résolution des références vers ces nouveaux types, vous pouvez les inclure dans votre fichier d’en-têtes précompilé (généralement pch.h).To bring those headers files into your project, so that references to those new types resolve, you can go into your precompiled header file (typically pch.h) and include them.

Vous devez inclure uniquement les en-têtes qui correspondent aux types que vous utilisez.You need to include only the headers that correspond to the types that you use. Mais voici un exemple qui contient tous les fichiers d’en-têtes générés pour le package Microsoft.UI.Xaml.But here's an example that includes all of the generated header files for the Microsoft.UI.Xaml package.

// 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"
...

Modifier MainPage.cppEdit MainPage.cpp

Dans MainPage.cpp, supprimez le code à l’intérieur de votre implémentation de MainPage::ClickHandler, car le balisage XAML ne contient plus myButton.In MainPage.cpp, delete the code inside your implementation of MainPage::ClickHandler, since myButton is no longer in the XAML markup.

Vous pouvez à présent lancer le processus de génération et exécuter le projet.You can now build and run the project.

Capture d’écran de l’exemple de bibliothèque d’IU Windows C++/WinRT simple