Les Rencontres Windows Forms

Cécile Muno

Une évaluation des « Rencontres Windows Forms » organisées par Microsoft France par plusieurs membres de développez.com.

N'hésitez pas à commenter cet article ! Commentez

- Titre : Les Rencontres Windows Forms

- Auteur : Cécile Muno

- Parution : 17 juin 2005

- Mise à jour : 30 mai 2020

- Licence : Copyright ® 2005 Cécile Muno. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Les protagonistes

- II. Introduction

- III. Programme des sessions

- Les démos

- IV. Réactions

- V. Liens utiles

- V-A. Développez

- V-B. Microsoft France

I - Les protagonistes

Cet article résume la session de ce 02 juin 2005 après-midi à Lille ainsi que celle de Paris ce lundi 13 juin 2005. L'équipe représentative de Developpez.com est composée de Ditch, Greybird, Sadar et Khany pour Lille tandis que Thomas Lebrun, Gaël Donat, Pharaonix et c_chatelain étaient présents à Paris. Le résumé qui suit est une synthèse de nos réactions, idées, opinions sur ces quelques heures de plongée au cœur d'une plateforme en pleine évolution.

II - Introduction

Comme vous l'avez certainement lu et/ou vu sur les forums de Langue https://www.developpez.com/, Microsoft France organise pendant ces mois de mai et juin plusieurs sessions consacrées à l'exploitation des Windows Forms sous Visual Studio NET. Contrairement à beaucoup de conférences, actuellement celle-ci n'est pas uniquement portée sur les nouveautés. Certes, l'avenir est important, mais le présent l'est d'autant plus. Toutes les démonstrations ont été réalisées avec les contrôles existants indépendamment de la version du Framework et, bien que certains soient spécifiques à la version 2.0, l'ensemble est réalisable quelle que soit votre plateforme. Les démos sont focalisées sur les concepts et non sur la syntaxe. Effectivement, il sera relativement aisé de les comprendre en étudiant le code disponible (voir rubrique liens), mais les concepts sont parfois légèrement plus complexes à entériner.

Dépasser nos limites est ce que Microsoft nous propose lors de cette session, élargir notre esprit à des concepts que tout un chacun pense inabordables et se plonger dans un univers où la programmation devient un plaisir et agglomère tous les concepts, toutes les idées et, finalement, tous les langages dans une sphère nommée Framework NET !

Des intervenants de choix :

- Mitsu FURUTA pour la majorité des démonstrations et explications ;

- Arnaud TORRIS (Access-IT) pour l'interopérabilité ;

- Pierre LAGARDE pour le côté technique indispensable à une telle organisation.

III - Programme des sessions

Le programme fut très fourni et axé pour la majorité sur le développement des applications. Très peu de slides et de paroles, mais énormément de démos et de commentaires de code : un vrai régal ! Ci-après un résumé très général du programme proposé :

- Accueil et partenariat

- Cible : .NET VS 2003 et VS 2005, pas de ClickOnce et pas d'Accès aux données

- Ces sessions n'ont pas pour but de parler de ClickOnce, évoqué et développé lors des Devdays ni de se concentrer sur les accès aux données puisque ce thème fut abordé lors des journées ADO.NET.

- Présentation générale de .NET et interopérabilité

- Rappel de l'architecture NET

- Revue de la plateforme d'exécution

- CLR et framework

- Code managé (IL)

- Interopérabilité Win32 et COM

- Problématiques : appel de fonctions, mapping mémoire, etc.

- Utilisation / pointeurs

- Interopérabilité COM

- Client d'un serveur COM

- Classe AxHost

- Wrapper un serveur COM existant dans NET (Ex. : Windows media Player)

- Assurer la compatibilité

- Propriétés compatibles avec le modèle de données NET (Dock, etc.)

- Librairie managée

- Création d'un serveur COM (2 manières)

- Register for Com Interop

- RegAsm.exe : les librairies NET ne sont pas des objets COM

- Windows Forms : les concepts

- Présentation

- Handle

- Messages

- Styles

- Affichage GDI et GDI+

- Affichage multifeuilles

- l'événement OnPaint

- méthode de double Buffer

- stratégie de superpositions et refresh

- sauvegarde vidéo

- réaffichage

- Empilement des messages : blocage

- GDI+ : gradients, rotation, transparence

- Pause

- Windows Forms, IHM avancées

- Les contrôles Windows Forms

- Les contrôles Container : SplitContainer, TableLayoutPanel, FlowLayoutPanel

- Les ToolStrip : MenuStrip, ToolStrip, StatusStrip, ContextmenuStrip

- Les contrôles avancés : DataGridView, ListView, etc

- Héritage de Forms et contrôles utilisateurs

- Hiérarchie de forms

- Ajout de propriétés et événements

- Composants / Contrôles autoinstallés

- Interfaces dynamiques

- Création dynamique de contrôles

- Externalisation des définitions

- Liaisons dynamiques de code

- XAML

- Basé sur du script XML

- Peut être lié à du code behind et/ou contenir du code

- Détache l'application d'un mode de rendu particulier

- Création de composants

- Questions/Réponses

Les démos

Des démonstrations et du code à gogo. Des commentaires impeccables de Mitsu FURUTA et une envie irrésistible de vouloir tout essayer soi-même.

1. WindowsMediaPlayer

L'utilisation du classique WindowsMediaPlayer après l'avoir référencé dans la boite à outils. On se retrouve avec un composant classique, l'accès à ses propriétés et l'utilisation de l'intellisense montre le regroupement des propriétés NET et COM.
Aux propriétés de l'objet COM WindowsMediaPlayer, envoloppées dans une classe .NET, se rajoutent des propriétés spécifiques à .NET, telles que Dock par exemple, pour en faire un composant à part entière, disponible dans la boîte à outils.

1. Assembly .NET

Présente un Assembly NET comme un objet COM via l'utilisation de : Using system.runtime.interopservices avec ConRegisterFunction (cela nous rappelle le bien connu RegSvr32) et à l'appel suivant il y a désenregistrement.
Un point sympathique est la possibilité de faire exécuter du code à l'enregistrement ou au désenregistrement du serveur COM : idéal pour de l'initialisation ou du nettoyage de base de registre par exemple.

1. CreateParams() et WndProc()

Surcharge de ces fonctions
Rappels sur les fenêtres Win32
Mise en avant du wrapping de l'API Windows par l'API Windows Forms.

1. SendMessage

Capture du handle, du texte ou même du bitmap de la fenêtre où se situe la souris sur un événement MouseMove au moyen de simples appels à la fonction SendMessage via l'interopérabilité

1. Un contrôle TabControl modifié

Possibilité de modifier l'aspect design et le rendu à l'exécution d'un contrôle. Exemple : les onglets d'un TabControl visibles en design pour faciliter le travail du programmeur, mais invisible en exécution afin de les assimiler à un aspect feuille.
Notion de zone cliente et de zone non-cliente exploitée dans 2005 afin de « jouer » sur la possibilité de déplacement de contrôles via la souris. Surcharge d'une méthode DisplayRectangle qui permet d'intégrer la zone non-cliente à la programmation.

1. Superpositions de feuilles

Quelques exemples de superpositions de feuilles et de réaffichage des feuilles ayant été partiellement « cachées ». La manière de gérer l'empilement des messages et de gérer l'événement Paint qui redessine les feuilles.
Exemple avec l'instruction Application.DoEvents().

1. Scintillement

L'instruction FromImage pour palier aux scintillements de refresh bien connu des programmeurs via le double buffering

1. CaptureBitmap

La différence d'application entre CaptureWindowBitBlt et CaptureWindowPrint
Ces deux fonctions ont été définies par Mitsu dans son code et encapsulent l'API Win32 (fonction BitBlt et message WM_PRINT).

1. Un petit tour des contrôles améliorés et/ou nouveautés sur 2005

Une démo impossible à décrire tellement elle touche des sujets différents, il vous faudra patienter avant de la télécharger sur le site de Microsoft

1. Les Threads

Un composant .NET encapsulant un thread, et gérant l'interaction avec le thread principal de l'application via des événements.

1. Le Design se modifie

Il devient possible de changer le design d'une application à l'exécution et de sauvegarder cette présentation dans un format quelconque (ici un fichier XML). Ce principe, appelé, sérialisation et désérialisation permet d'éviter les sauvegardes d'options interminables. Il est maintenant possible de modifier les propriétés des contrôles et de les mémoriser pour la prochaine ouverture de l'application. La sérialisation gère les flux de données et les stocks sous un format XML, SOAP ou Binaire. Bel outil n'est-ce pas ?

1. XAML

Le but de XAML : rendre le design d'une application dépendant de son environnement (DirectX, Windows ou Web) sans toucher à la programmation

1. EDITOR et DESIGNER

Ces deux classes sont très sollicitées dans la création de contrôles avec des boutons d'extensions (flèche vers le bas ou 3 points de suspension) ainsi que des collections

1. Création d'applications

D'abord, une application style Outlook totalement construite pas à pas, commentée par un Mitsu encore en super forme après toutes ces heures d'explications !!!

Ensuite, un exemple génial sur la possibilité de modifier le code généré via CodeDom en créant une nouvelle classe qui implémente une interface. Démonstration magistrale à revoir via les e-demos lorsqu'elles seront en ligne.

IV - Réactions

Greybird : Une session fort intéressante, qui fournit un bon tour d'horizon de l'interopérabilité et de bonnes pratiques de conceptions d'interfaces utilisateurs. La présentation, tout en étant très axée sur le Framework v1, présente également les améliorations apportées par le Framework v2 et son nouvel IDE, VS 2005. Une excellente plongée plus en profondeur dans Windows Forms après des DevDays plus généraux.

Ditch : Ici il ne s'agissait pas de présenter VS.NET 2005. 80 % des choses que l'on a vues sont applicables au 2003.
On pourrait plus nommer cela « truc et astuces pour un développement simple ayant un rendu convivial ».
Personnellement, j'ai vraiment accroché sur pleins de choses:

- capture d'écrans (partielles ou totales)

- passage en mode design à l'exécution

- création de code par du code

- sérialisation

En un mot: EXCELLENT! En 4h, j'ai appris plus que dans toutes les conférences auxquelles j'ai participé.

Sadar : J'ai fortement apprécié les nouveaux composants qui offrent plus de facilité à la présentation des applications : menu, conteneur, barre d'outils… En réduisant la quantité de lignes de programmation, le gain de temps sera apprécié à sa juste valeur. Nous avons à notre portée un environnement VS plus clair et plus précis. Il reste maintenant à tester la version 2.0 dans tous les contextes de développement pour se sensibiliser à sa véritable efficacité.

Khany : Une superbe session Windows Forms qui donne l'envie d'appliquer bien vite les exemples préparés et d'approfondir quelques domaines particuliers en rapport avec son environnement de développement personnel.

Thomas Lebrun : Une très bonne session, des présentations très techniques : Pierre COUZY et Mitsu FURUTA nous ont fait la preuve des possibilités du Framework 2.0 et nous ont également montré qu'il était possible de faire des choses vraiment très complexes, avec l'existant.
Bref, un vrai régal et un avis à 300 % favorable.

Gaël Donat : J'étais un peu resté sur ma faim lors de la session « Office Developpeur » du mois dernier, session peu technique et finalement pas très intéressante. Là, c'est l'extrême opposé, cette session était très riche, les intervenants étaient très compétents.

Pour les choses qui m'ont bluffé : la possibilité de faire du databindings de contrôles, possibilité offerte avec le framework 2.0 et implémentée dans VS 2005, l'interopérabilité avec le système de message Windows, nous n'avons vu que la partie graphique en GDI et GDI+, WM_PAINT, mais la technique s'adapte bien évidemment à tous les types de messages du système de gestion Windows, un simple override pour surcharger l'événement et c'est réglé.

Bref, une très bonne session que je conseille à tous ceux qui veulent approfondir leur connaissance des Windows Forms.

V - Liens utiles

V-A - Développez

À propos de XAML : Comprendre XAML

À propos de .NET : À la découverte de .NET

Progresser avec .NET : Cours et Tutoriels .NET

N'hésitez pas, venez donner votre avis, cela nous intéresse !

V-B - Microsoft France

Démonstrations Windows Forms : les démos et les slides
À venir d'ici quelques semaines, les sources en VB.NET ainsi que les e-demos.

Suite aux DevDays : nouvelles e-demos sur 2.0