Le premier site francophone dédié au développement Pocket PC

Création automatique d'une bibliothèque de composants pour le Compact Framework dans Visual Studio 2003.
Auteur
Olivier Dewit
Date 2 novembre 2003
 
   


Composants et contrôles

La conception de formulaire dans Visual Studio 2003 repose sur la notion de composant et de contrôle.
Un composant est la représentation visuelle d'un objet dans l'environnement de développement intégré (EDI). Sa classe de base est Component. Il peut être déposé sur un formulaire depuis la boîte à outils (palette des composants). Ses propriétés peuvent être éditées dans la fenêtre des propriétés. Le câblage des gestionnaires d'événement est facilement réalisable dans l'EDI, qui génère automatiquement le code d'assignation des délégués. A l'exécution, le composant est automatiquement instancié.

L'utilisation d'un composant s'avère généralement plus productive que l'instanciation manuelle de classe par codage.

Un contrôle est un composant visuel. Sa classe de base est Control, qui hérite de Component. Il se manipule selon le même principe qu'un composant, mais est représenté visuellement sur le formulaire. Sa taille et sa position peuvent être modifiées. La copie d'écran ci-dessous montre un formulaire en mode conception, avec un contrôle nommé colorControl1 sur la surface de travail, et deux composants mainMenu1 et formManager1 dans la zone du bas.

Dans la suite de cet article, nous présenterons la réalisation du composant FormManager et du contrôle ColorControl.

Assemblage d'exécution et assemblage de conception

Visual Studio instancie le composant ou le contrôle pour permettre sa manipulation dans l'EDI. Les composants pour le Compact Framework doivent donc être déclinés en deux versions, l'une pour le Compact Framework sous Windows CE et l'autre pour Visual Studio sous Windows. Chaque version correspond à un assemblage distinct : l'assemblage d'exécution pour le Compact Framework, et l'assemblage de conception (ou design) pour Visual Studio.

Plusieurs articles disponibles sur Internet (dont l'article de Laurent Docquir sur CodePPC Développer des contrôles mobiles pour Visual Studio .NET 2003 et CF) exposent des procédures pour créer ces deux assemblages à partir du même code source. Ces procédures s'avèrent relativement délicates, car par défaut Visual Studio ne sait pas partager du code entre deux projets, mais le duplique. Il faut donc mettre en oeuvre des palliatifs, qui vont du fichier .bat de compilation au regroupement manuel de projets dans un même dossier, en passant par l'utilisation du partage de fichier dans Visual Source Safe.

La réalisation d'un assemblage de conception n'est pas possible avec Visual Basic .NET, et doit être effectuée en C#. Le compilateur Visual Basic .NET ne supporte pas en effet les références simultanées sur les assemblages System.Windows.Forms et System.CF.Windows.Forms qui définissent des classes de même nom dans un même espace de noms. Ceci impose pratiquement C# comme langage de développement de composants pour Visual Studio...

L'assistant odewit.Wizard

Pour les besoins de mon ouvrage Le guide de la programmation .NET pour la mobilité (éditions ESKA-SYBEX), j'ai réalisé un assistant pour Visual Studio - ou wizard - qui produit une solution composée de deux projets C# partageant les mêmes fichiers source dans le même dossier. Le premier projet correspond à l'assemblage d'exécution, l'autre à l'assemblage de conception. L'assistant génère également le support d'une directive de compilation DESIGN pour distinguer le code spécifique au mode conception, les procédures d'installation des assemblages dans Visual Studio et les déclarations d'attribut adéquates. Cet assistant s'appelle odewit.Wizard. Il est distribué sous la forme d'un freeware, disponible sur le site www.odewit.net.

Installation

Pour installer l'assistant, décompactez sur votre disque local le fichier odewit.Wizard.zip.

Copiez le fichier odewit.Wizard.dll dans C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE (ou le dossier équivalent pour une installation non-standard).

Placez-vous sur la ligne de commande de Visual Studio, par le menu Démarrer - Programmes - Microsoft Visual Studio .NET 2003 - Outils Visual Studio .NET - Visual Studio .NET 2003 Command Prompt.

Positionnez-vous dans le dossier C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE et saisissez le commande suivante :

regasm odewit.Wizard.dll

Effectuez une copie de sauvegarde de votre dossier C:\Program Files\Microsoft Visual Studio .NET 2003\VC#.

Copiez le dossier VC# depuis le dossier odewit.Wizard vers le répertoire d'installation de Visual Studio.NET 2003 (C:\Program Files\Microsoft Visual Studio .NET 2003). Il contient des dossiers qui existent déjà, mais la copie n'écrase aucun fichier. Lors de la demande de confirmation de remplacement de dossier, choisissez "Tous".

Mise en place d'une solution

Après avoir installé l'assistant, créez un nouveau projet de type Bibliothèque de composants Smart Device. Nommez-le par exemple odewit.Tools.

Visual Studio génère une nouvelle solution, comportant dans le même dossier deux projets : odewit.Tools pour l'exécution sous le Compact Framework, et odewit.Tools.Design pour le mode conception sous Visual Studio.

La directive de compilation conditionnelle DESIGN est active dans le projet odewit.Tools.Design, mais pas dans odewit.Tools.

Création d'un composant

Pour créer un composant non-visuel, ajoutez dans le projet odewit.Tools un élément de type Composant bi-mode, nommé FormManager (par exemple). Ce type d'élément est spécifique à notre assistant.

La classe générée hérite de Component. En mode conception, elle est paramétrée par des attributs ToolBoxItemFilterAttribute, requis pour l'affichage des composants dans la boîte à outils :

#if DESIGN
[ToolboxItemFilter("System.CF.Windows.Forms", ToolboxItemFilterType.Custom)]
[ToolboxItemFilter("NETCF", ToolboxItemFilterType.Require)]
#endif
public class FormManager : Component
...

Ajoutez le composant au projet odewit.Tools.Design, et enrichissez son code.

Création et utilisation d'un contrôle

Dans le projet odewit.Tools, ajoutez une référence sur les assemblages System.Windows.Forms.dll et System.Drawing.dll

Pour créer un contrôle visuel, ajoutez dans le projet odewit.Tools un élément de type Classe, nommé ColorControl (par exemple). Cette classe doit être modifiée pour hériter de Control et implémenter sa logique.

using System;
using System.Windows.Forms;
using System.Drawing;

namespace odewit.Tools
{
public class ColorControl : Control
{
public ColorControl()
{
this.BackColor = Color.Yellow;
}
}
}

Ajoutez la classe ColorControl au projet odewit.Tools.Design.

Association d'une bitmap au composant et au contrôle

Modifiez manuellement l'espace de noms par défaut dans les propriétés du projet de conception (odewit.Tools.Design) en lui assignant la valeur odewit.Tools.

Une bitmap 16 couleurs de dimensions 16x16 portant le nom du composant (par exemple FormManager.bmp pour le composant FormManager) peut être ajoutée au projet contenant le code du composant. Elle est automatiquement prise en compte par la boîte à outils pour le représenter. Sa propriété Action de génération doit être basculée à la valeur Ressource incorporée.

Ajoutez ainsi au projet odewit.Tools.Design les bitmaps FormManager.bmp et ColorControl.bmp.

Version de l'assemblage

L'association entre le contrôle connu par Visual Studio et le contrôle à déployer pour l'exécution se fait dans le fichier AssemblyInfo.cs par l'attribut RuntimeAssemblyAttribute, nécessaire en mode conception. Le constructeur de cet attribut prend en argument le nom qualifié de l'assemblage pour l'exécution, composé du nom du fichier sans l'extension .dll, de sa version, de sa culture, et de sa clé publique. Ce code a été généré par notre assistant.

La version spécifiée dans l'attribut RuntimeAssemblyAttribute doit correspondre exactement à celle spécifiée dans l'attribut AssemblyVersionAttribute. La notation 1.0.*, qui signifie que les numéros de build et de révision sont incrémentés automatiquement, ne doit pas être utilisée. Il est donc nécessaire d'incrémenter manuellement les numéros de version, tels que 1.0.1.2.

Installation dans la boîte à outils

Générez la solution, puis exécutez la procédure de mise à jour des dossiers de déploiement et de conception, à l'aide des fichiers de commande générés dans le répertoire des sources par notre assistant :

  • InstallDebug.bat si vous compilez en configuration Debug,
  • InstallRelease.bat si vous compilez en configuration Release

La copie échoue si une instance de Visual Studio utilise déjà le composant FormManager ou le contrôle ColorControl.

Ajoutez les composants de odewit.Tools.Design à la boîte à outils, depuis le chemin des assemblages de conception (par défaut C:\Program Files\Microsoft Visual Studio .NET 2003\CompactFrameworkSDK\v1.0.5000\Windows CE\Designer).

Le composant FormManager et le contrôle ColorControl apparaissent alors dans la boîte à outils, et peuvent être utilisés dans des formulaires.

Olivier Dewit

 
   

Copyright 2001-2004 - Tous droits réservés
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.