Heureusement, ce qui sauve le programmeur VB (sans parfois qu'il le sache), c'est qu'à chaque fois qu'on appelle des DLL, on n'est pas systématiquement obligé de passer par l'API. Il existe une autre voie, bien plus facile. Cette voie, ce sont les... contrôles !
Mais oui ! Les contrôles ne sont que des programmes qui servent d'intermédiaire entre le développeur et les DLL de Windows, intermédiaire qui se charge de traduire la discussion en la rendant nettement plus accessible.
Quand on y réfléchit un peu, tout ça se tient parfaitement. Depuis le début de ce cours, qu'avons nous fait ? Nous avons employé des boutons, des cases à cocher, des listes, etc. autrement dit des éléments de Windows>. Cela signifie que les boutons, les cases à cocher, et tutti quanti existent dans Windows sous forme de DLL. Ce sont ces DLL que nos logiciels classiques (Word, Excel ou Photoshop) utilisent en permanence. Et ce sont ces mêmes DLL que nous avons pu utiliser nous aussi pour écrire nos propres applications.
Simplement, nous n'avons pas eu à programmer d'appels API lorsque nous avions besoin de tout cela (on s'en serait rendu compte !). Pourquoi ? Parce que d'autres programmeurs, en l'occurrence les auteurs du langage Visual Basic, ont écrit avant nous de petits programmes nous présentant ces DLL sous forme d'objets réutilisables, avec leurs propriétés et leurs méthodes.
Dès lors, cela signifie que si l'on a besoin d'un élément de Windows, il faut toujours chercher à passer par un contrôle, et ne se résoudre à passer par l'API qu'en dernier recours, si on n'a trouvé aucun contrôle qui effectue la tâche voulue.
On peut classer les contrôles VB en quatre catégories :
un certain nombre de contrôles sont fournis en standard avec VB. Ce sont ceux que nous avons explorés tout au long de ce cours. Même si nous en avons laissé un ou deux de côté, ces contrôles ne devraient à l'heure actuelle plus avoir guère de secrets pour vous...
d'autres contrôles se tiennent en réserve dans VB, prêts à être exploités (par exemple, pour gérer des fonctions multimédia). Pour les utiliser, il faut aller les charger par le menu Projet – Composants. Malheureusement, l'aide disponible sur ces contrôles n'est pas toujours très prolixe, pour dire le moins… Concrètement, on ne peut utiliser ces contrôles que muni d'une documentation qui n'existe que dans certains ouvrages spécialisés.
il existe une autre possibilité : des programmeurs, qui mettent des contrôles supplémentaires à votre disposition sur le Net, à titre plus ou moins gracieux. Ces contrôles sont souvent très utiles, et sont un excellent moyen pour ne pas avoir à réinventer quelque chose qui l'a déjà été. Ils se présentent toujours sous la forme de fichiers *.ocx. Il suffit de les télécharger - si possible dans le bon répertoire, celui qui contient déjà tous les autres fichiers *.ocx -, et de les activer dans VB via la même manœuvre que précédemment. Dans ce cas, la documentation est de qualité variable. Au pire, le contrôle est livré seul, sans explication, ce qui promet généralement de longues heures de tâtonnement pour comprendre le fonctionnement de ses propriétés. Au mieux (et ce n'est pas rare), le développeur vous fournit un fichier d'aide détaillant propriétés et méthodes, ainsi qu'un exemple d'utilisation. Dans ce cas, la vie est merveilleusement belle.
enfin, un programmeur averti sera capable de créer lui-même des contrôles. Mais cela sort quelque peu des modestes ambitions de notre propos. Sachez toutefois que cela n'a rien d'insurmontable.
A signaler que si votre application emploie des contrôles non standard, vous devez veiller, tout comme pour des fichiers images, à ce que l'installateur repère ces contrôles et les écrive dans le bon répertoire des machines sur lesquelles votre application sera distribuée.
Je termine cette partie par un exemple qui en vaut un autre, celui du contrôle qui gère les DLL des boîtes de dialogue communes (Fichier-Ouvrir, Fichier-Imprimer, etc.) : le contrôle Comdlg32.ocx
Celui-ci permet d’utiliser la DLL correspondante, dont on a parlé plus haut (comdlg32.dll). Grâce à ce contrôle, on disposera donc des menus Fichier - Ouvrir, Fichier - Enregistrer, etc., sans - presque - avoir à rien faire.
Avant toute chose, il faut bien sûr commencer par charger le contrôle comdlg32.ocx dans VB, car ce contrôle, par défaut, ne vous est pas proposé. Rappel : pour ce faire, il faut passer par la commande Projet – Composants, et le choisir dans la liste.
Ensuite, l’astuce, c’est qu’avec ce seul contrôle, on peut ouvrir six boîtes de dialogues différentes. Pour ce faire, il suffit d’appliquer à ce contrôle la méthode appropriée :
Boîte de dialogue Méthode à utiliser
Fichier - Ouvrir ShowOpen
Fichier - Enregistrer ShowSave
Couleur ShowColor
Police ShowFont
Imprimer ShowPrinter
Aide ShowHelp
Avant de lancer telle ou telle méthode pour ouvrir la boîte de dialogue correspondante, il conviendra d'ajuster les propriétés du contrôle, afin de préciser éventuellement des filtres (pour Fichier - Ouvrir), un titre pour votre boîte, etc. De même, la réponse de l’utilisateur sera stockée, comme d’habitude, dans une autre propriété du contrôle. On a ainsi, entre autres, pour la boîte de dialogue Fichier - Ouvrir :
FileName : qui récupère le nom complet (avec le chemin) du fichier sélectionné par l’utilisateur
FileTitle : qui récupère le nom du fichier sélectionné par l’utilisateur sans le chemin
Filter : qui définit le(s) type(s) de fichiers proposés par votre boîte de dialogue
FilterIndex : qui définit lequel des filtres doit être utilisé
InitDir : qui fixe le répertoire initial
DialogTitle : qui donne titre de la boîte de dialogue
etc.
Pour les propriétés des autres boîtes de dialogue communes, cf. les bouquins ou le Net !
L'affichage d'un Gif animé, la lecture d'un fichier mp3 et la gestion des liens hypertexte sont des tâches qui ne sont assumées par aucun contrôle standard de Visual Basic. Mais pour chacune d'elle, des contrôles gratuits existent... quelque part ! Effectuez la recherche sur le Net, trouvez des contrôles adéquats et programmez-les. Vous ne trouverez pas forcément les mêmes que ceux dont les corrigés donnent la référence ; peu importe, seul le résultat compte !