Création d'un contrôle Windows Forms (C++)
Les contrôles Windows Forms sont des composants qui peuvent être ajoutés aux applications Windows Forms (applications GUI qui ciblent le Common Language Runtime). Les applications Windows Forms en Visual C++ utilisent les classes .NET Framework et autres fonctionnalités .NET avec la nouvelle syntaxe Visual C++.
Dans cette procédure, vous créez un contrôle Windows Forms qui affiche un nombre. Ce nombre incrémente chaque fois qu'un utilisateur clique sur l'étiquette dans une application. Vous créez également un projet d'application Windows Forms pour tester le contrôle.
Cette procédure pas à pas couvre les sujets suivants :
Création d'un projet.
Conception du contrôle.
Ajout d'une propriété personnalisée au contrôle.
Ajout d'un projet pour tester le contrôle.
Placement du contrôle dans une application.
Exécution de l'application.
Composants requis
Cette rubrique suppose que vous comprenez les notions de base du langage C++. Si vous commencez juste dans l'apprentissage de C++, nous vous recommandons de consulter l'ouvrage « C++ Beginner's Guide » de Herb Schildt, disponible en ligne à l'adresse https://go.microsoft.com/fwlink/?LinkId=115303.
Pour une version vidéo de cette rubrique, consultez Vidéo : Création d'un contrôle Windows Forms (C++) (page éventuellement en anglais).
Création d'un projet
Le modèle de projet de contrôle Windows Forms que vous utilisez dans cette section crée un contrôle utilisateur, qui est un contrôle composite contenant d'autres contrôles.
Vous pouvez également créer un contrôle Windows Forms en dérivant une classe directement de la classe Control (votre code est chargé de dessiner le contrôle) ou de la classe Component (un contrôle sans interface utilisateur).
Pour créer un projet de contrôle Windows Forms
Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet.
Dans le volet Types de projets, sélectionnez CLR dans le nœud Visual C++, puis sélectionnez Bibliothèque de contrôles Windows Forms dans le volet Modèles Visual Studio installés.
Saisissez un nom pour le projet, tel que clickcounter.
Tapez un nom différent pour la solution, tel que controlandtestapp.
Vous pouvez accepter l'emplacement par défaut, saisir un emplacement souhaité ou naviguer jusqu'au répertoire où vous souhaitez enregistrer le projet.
Le Concepteur Windows Forms s'ouvre et affiche une zone où vous pouvez ajouter les contrôles que vous souhaitez positionner sur l'aire de conception du contrôle.
Conception du contrôle
Dans cette étape, vous ajoutez un contrôle Label à l'aire de conception de contrôles. Vous définissez alors des propriétés sur le contrôle lui-même et sur le contrôle Label qu'il contient.
Pour définir les propriétés d'un contrôle utilisateur
Si vous ne pouvez pas consulter la fenêtre Propriétés, dans le menu Affichage, cliquez sur Fenêtre Propriétés.
Dans le Concepteur Windows Forms, cliquez sur le contrôle afin de le sélectionner et définir ses propriétés comme suit :
Remplacez la valeur de la propriété Size par 100, 100.
Attribuez à BorderStyle la valeur Fixed3D
Les bords de l'étiquette seront visibles après avoir positionné le contrôle dans une application.
Si la fenêtre Boîtes à outils n'est pas visible, choisissez Boîtes à outils dans le menu Affichage.
Faites glisser un contrôle Label de la Boîte à outils vers l'aire de conception et positionnez-le vers le milieu du contrôle.
Attribuez à l'étiquette les propriétés suivantes :
Attribuez à la propriété BorderStyle la valeur FixedSingle
Attribuez à la propriété Text le chiffre 0 (zéro).
Attribuez à la propriété Autosize la valeur False.
Attribuez à la propriété Size la valeur 30, 20.
Attribuez à la propriété TextAlign la valeur MiddleCenter.
Laissez la propriété Name (selon la façon dont vous y faites référence dans le code) inchangée sur label1. Le contrôle doit se présenter comme suit :
Ajoutez un gestionnaire d'événements pour l'événement Click de l'étiquette (l'événement par défaut pour une étiquette) en double-cliquant sur l'étiquette.
Le fichier clickcounter.h s'affiche dans la zone d'édition avec une méthode de gestionnaire d'événements vide.
Notes
Si vous avez besoin de plus de place, fermez la fenêtre Boîte à outils ou Propriétés en cliquant sur la case de fermeture appropriée ou en désépinglant la fenêtre afin qu'elle se masque automatiquement.
Déplacez le curseur après l'accolade ouvrante de la méthode label1_Click, appuyez sur Entrée et tapez :
int temp = System::Int32::Parse(label1->Text); temp++; label1->Text = temp.ToString();
IntelliSense affiche une liste de choix valides une fois que vous avez saisi un opérateur de résolution de portée (::), un opérateur de point (.) ou un opérateur flèche (- >). Vous pouvez mettre un élément en surbrillance et appuyer sur TAB ou ENTRÉE ou double-cliquer sur un élément pour insérer celui-ci dans votre code.
De même, lorsque vous saisissez une parenthèse ouvrante pour une méthode, Visual Studio affiche les types d'arguments valides pour chaque surcharge de la méthode.
Ajout d'une propriété personnalisée au contrôle
Au cours de cette étape, vous allez définir une propriété personnalisée qui détermine si le nombre affiché sur le contrôle s'incrémente lorsqu'un utilisateur clique sur l'étiquette ou lorsqu'un utilisateur clique sur un emplacement du contrôle.
Pour ajouter une propriété personnalisée à un contrôle
Placez le curseur après les deux points du premier indicateur de portée public, public:, en haut du fichier clickcounterControl.h, appuyez sur Entrée, puis tapez les éléments suivants :
property bool ClickAnywhere { bool get() { return (label1->Dock == DockStyle::Fill); } void set(bool val) { if (val) label1->Dock = DockStyle::Fill; else label1->Dock = DockStyle::None; } }
Lorsque vous affectez la valeur true à la propriété ClickAnywhere du contrôle, la propriété Dock de l'étiquette a la valeur DockStyle::Fill et l'étiquette remplit la surface complète de contrôle. Un clic n'importe où sur la surface du contrôle provoque un événement Click d'étiquette, qui incrémente le nombre sur l'étiquette.
Lorsque la propriété ClickAnywhere est false (la valeur par défaut), la propriété Dock de l'étiquette a la valeur DockStyle::None. L'étiquette ne remplit pas le contrôle et il faut cliquer sur le contrôle à l'intérieur des bords de l'étiquette pour provoquer un événement Click de l'étiquette, ce qui incrémente le nombre.
Génération du contrôle utilisateur. Dans le menu Générer, sélectionnez Générer la solution.
S'il n'y a pas d'erreurs, un contrôle Windows Forms est généré avec un nom de fichier clickcounter.dll. Vous pouvez retrouver ce fichier dans la structure du répertoire de votre projet.
Ajout d'un projet pour tester le contrôle
Dans cette étape, vous allez créer un projet d'application Windows Forms dans lequel vous positionnerez des instances du contrôle clickcounter sur un formulaire.
Notes
Vous pouvez écrire l'application Windows Forms que vous créez pour tester le contrôle à l'aide de Visual C++ ou un autre langage .NET, tel que C# ou Visual Basic.
Pour créer un projet d'application Windows Forms
- Dans le menu Fichier, sélectionnez Nouveau, puis cliquez sur Projet....
Vous pouvez également ajouter un projet à la solution :cliquez avec le bouton droit sur la solution controlandtestappdans l'Explorateur de solutions, pointez sur Ajouter, puiscliquez sur Nouveau projet....
Dans le volet Types de projets, sélectionnez CLR dans le nœud Visual C++, puis sélectionnez Application Windows Forms dans le volet Modèles Visual Studio installés.
Saisissez un nom pour le projet, tel que testapp.
Assurez-vous de bien sélectionner Ajouter à la solution au lieu d'accepter le paramètre par défaut Créer une nouvelle solution dans la liste déroulante Solution, puis cliquez sur OK.
Le Concepteur Windows Forms pour le nouveau projet s'ouvre, affichant un nouveau formulaire nommé Form1 comme dans l'illustration suivante :
Pour ajouter un contrôle à la boîte à outils
Ajouter une référence au contrôle. Cliquez avec le bouton droit sur le projet testapp dans l'Explorateur de solutions et cliquez sur Références.
Cliquez sur le bouton Ajouter une nouvelle référence, sur l'onglet Projets (vous ajoutez une référence à un autre projet dans cette solution), puis sélectionnez le projet clickcounter. Cliquez deux fois sur OK.
Si vous ne pouvez pas consulter la fenêtre Boîte à outils, sélectionnez Boîte à outils dans le menu affichage.
Si vous ne pouvez pas trouver le contrôle clickCounter dans la Boîte à outils avec une icône d'« engrenage », cliquez alors avec le bouton droit sur la Boîte à outils, puis sur Choisir les éléments.
Cliquez sur le bouton Parcourir et localisez le fichier clickcounter.dll dans la structure de répertoire de votre solution. Sélectionnez le fichier et cliquez sur Ouvrir.
Le contrôle clickcounter est affiché dans la liste des Composants .NET Framework avec une coche. Cliquez sur OK.
Le contrôle apparaît dans la Boîte à outils avec une icône "d'engrenage" par défaut.
Placement du contrôle dans une application
Dans cette étape, vous mettez deux instances du contrôle sur un formulaire d'application et définissez leurs propriétés.
Pour mettre des instances d'un contrôle sur un formulaire
Faites glisser deux instances du contrôle clickcounter à partir de la Boîte à outils. Placez-les sur le formulaire afin qu'elles ne se chevauchent pas.
Si vous souhaitez élargir le formulaire, cliquez dessus pour le sélectionner et faites glisser l'une de ses poignées de sélection vers l'extérieur.
Si vous ne pouvez pas consulter la fenêtre Boîte à outils, sélectionnez Boîte à outils dans le menu affichage.
La propriété ClickAnywhere est présente dans la section Divers de la Fenêtre Propriétés (si les propriétés sont organisées par catégorie).
Cliquez sur une instance du contrôle clickcounter sur le formulaire pour le sélectionner, puis attribuez la valeur true à sa propriété ClickAnywhere.
Laissez à la propriété ClickAnywhere de l'autre instance du contrôle clickcounter la valeur false (la valeur par défaut).
Cliquez avec le bouton droit sur le projet testapp dans l'Explorateur de solutions, puis sélectionnez Définir comme projet de démarrage.
Dans le menu Générer, sélectionnez Régénérer la solution.
Vous devez normalement constater que les deux projets ont été générés sans erreur.
Exécution de l'application
Dans cette étape, vous lancez l'application et cliquez sur les contrôles pour les tester.
Pour tester l'application
Dans le menu Déboguer, cliquez sur Démarrer le débogage.
Le formulaire apparaît avec les deux instances du contrôle visibles.
Exécutez l'application et cliquez sur les deux contrôles clickcounter :
Cliquez sur le contrôle à l'aide de ClickAnywhere qui a la valeur true.
Le nombre sur l'étiquette s'incrémente lorsque vous cliquez à un endroit quelconque du contrôle.
Cliquez sur le contrôle à l'aide de ClickAnywhere qui a la valeur false.
Le nombre sur l'étiquette s'incrémente seulement si vous cliquez à l'intérieur des bords visibles de l'étiquette. La capture d'écran suivante illustre l'apparence que peut prendre l'application après avoir cliqué dessus quelques fois :
- Fermez l'application de test en cliquant sur sa case de fermeture dans le coin supérieur droit de la fenêtre Form1.
Étapes suivantes
Précédent : Création d'une application Windows Forms à l'aide du .NET Framework (C++) | Suivant : Création d'un jeu à l'aide de DirectX (C++)
Voir aussi
Tâches
Référence
Concepts
Introduction à l'IDE de Visual Studio (C++)