Création rapide d'une application SDI

Dans cette page, je vous guide pas à pas, pour modifier la barre de menu d'un modèle sdi, pour que vous puissiez personnaliser vos applications sans trop d'efforts.

Si vous désirez uniquement ajouter du code dans une source .cpp, sans modifier l'apparence de l'application sdi, vous pouvez passer directement au lien suivant.

Le modèle apxsdi de la version BC5 de BORLAND

Les constructions qui suivent, nécessitent un compilateur c++ 32 bits, comme bcc32 de borland, ou vcc de microsoft. L'exemple a été testé avec la version bc5 de borland, mais les remarques générales qui suivent, peuvent s'appliquer à d'autres compilateurs (avec des modifications mineures)

Il faut commencer en s'assurant que l'on possède un exemple complet, avec ses sources .cpp, .rc, .h ou .rh, qui contiennent le code en langage c++ et les déclarations nécessaires aux ressources du projet. On trouve souvent, en plus des fichiers précédents, un fichier makefile (ou un .mak) qui facilite la compilation sur la ligne de commande (invite de DOS) Par exemple, la compilation pour bc5, se fait grâce à l'utilitaire make.exe

Vous commencerez par copier tous ces fichiers dans un répertoire de travail, puis vous lancerez la compilation, et enfin, vous exécuterez le .exe ainsi produit, pour prendre connaissance de son menu et de ses items.

Pour vous faciliter la tâche, j'ai copié l'exemple apxsdi de bc5, dans le sous-répertoire de nom modelsdi de winweb, et j'ai indiqué dans les fichiers à modifier, l'emplacement des modifications, par le commentaire //ajouter ici...

Remarque importante : vous pouvez utiliser les exemples de winweb, les modifier comme il est dit dans le cours, les compiler... mais pour cela, il faut les télécharger sur votre PC, en utilisant les liens de téléchargement que vous trouverez dans la page sommaire de winweb.

Si vous vous contentez de lire les commentaires de ce cours, vous pourrez néanmoins lire le résultat des modifications que je vous suggère de faire, en activant les liens avec les sources que j'ai moi-même modifiés pour éclairer les commentaires.

Vous pouvez activer la procédure compmode.bat, à l'invite de DOS, qui compile l'exemple apxsdi, et produit l'exécutable apxsdi.exe. C'est cette procédure que vous utiliserez, pour recompiler votre projet, après chaque modification. J'ai placé le résultat de la compilation, dans le fichier compmode.txt, que vous pouvez consulter avec le lien suivant :

Résultat de la compilation de l'exemple apxsdi

Si tout s'est déroulé correctement, vous pouvez commencer les modifications, que vous allez apporter dans les fichiers de ressources.

Les modifications dans les fichiers de ressources

Ces modifications seront faites avec un éditeur ordinaire pour WINDOWS, comme le bloc note, ou wordpad (en choisissant le format texte), mais n'utilisez pas de traitement de texte, qui introduiraient des erreurs dans les instructions que vous allez taper.

Je commence par le fichier apxsdapp.rh, qui contient les définitions des constantes, qui sont utilisées pour la reconnaissance des items des menus.

vous pouvez activer le lien qui suit, pour consulter ou modifier ce fichier.

fichier apxsdapp.rh qui contient les définitions des constantes pour les ressources

Si vous avez parcouru le fichier apxsdapp.rh, vous aurez remarqué qu'il contient des instructions #define, qui définissent des constantes que l'on retrouvera dans le fichier de ressources apxsdapp.rc

Pour vous en convaincre, consultez dès maintenant le fichier apxsdapp.rc, en activant le liens qui suit, et retenez les conventions qui permettent de déclarer des sous-menus ainsi que leurs items.

fichier de ressources apxsdapp.rc

Vous aurez remarqué la présence de mots réservés, écrits en majuscules, comme POPUP, BEGIN, END, MENUITEM... La syntaxe est simple et s'explique d'elle même, surtout si on la rapproche de ce que l'on voit dans le menu de l'application apxsdi.exe.

Pour cela, je vous propose d'activer apxsdapp.exe, grâce au lien suivant, et de parcourir sa barre de menu, et tous les items de tous les sous-menus, pour vous en convaincre.

activation de l'application apxsdi.exe

Voilà, vous êtes prêt pour ajouter de nouveaux items, ou de nouveaux sous-menus, en respectant bien entendu, les conventions d'écriture, imposées par le compilateur de ressources de borland ou de microsoft.

Traduction des indications et applications internationnales

Pour commencer, vous pouvez remplacer les indications écrites en anglais, par leurs traductions en français.

Remarquez la présence du symbole & dans les chaînes des instructions MENUITEM, qui permettent de sélectionner le caractère qui suit le symbole &, comme caractère d'activation de l'item correspondant.

Une fois les modifications faites, recompilez le projet par compmode.bat, puis consultez compmode.txt, pour vous assurer qu'il n'y a pas d'erreurs, lors de la compilation des ressources. Les ressources sont en effet compilées pour produire un fichier binaire .res, et elles sont ajoutées pour constituer le .exe, uniquement s'il n'y a pas d'erreurs.

Cette manière de procéder, a été choisie par microsoft, pour que l'on ne soit pas obligé de toucher aux fichiers de code .cpp, quand on ne désire faire que des changements mineurs dans les ressources. Cela permet de créer, par exemple, ce qui est souvent appelé, un peu pompeusement, des applications internationales, obtenues en traduisant simplement les indications des ressources dans la langue de son choix.

Conseils pour la modification des items du menu du projet apxsdi

Faites très attention de ne pas faire de fautes d'écriture, car les messages d'erreur du compilateur de ressources, sont loin d'être aussi clairs que les messages d'erreurs du compilateur bcc32 de borland.

Pour éviter de vous surcharger la mémoire, il est conseillé de donner aux constantes définies dans le fichier .rh, des noms écrits en majuscules, qui rappellent le nom du sous-menu et le nom de l'item, pour lesquels elles seront utilisées. On définiera, par exemple, HELPABOUT, pour l'item About du sous-menu Help

Les précautions pour sauvegarder votre travail

Si vous ne vous sentez pas encore tout à fait capable de modifier les fichiers .rh et .rc, j'ai fais moi-même des modifications, qui mettent en oeuvre les actions expliquées ci-dessus.

Pour que vous puissiez comparer le projet original, qui est dans le répertoire modelsdi, et le projet personnalisé, qui est dans le répertoire applisdi, activez le lien suivant, qui exécute applisdi.exe, et constatez les modifications qui apparaissent dans la barre de menu, et dans les items des sous-menus. Vous pouvez aussi réactiver l'application apxsdi.exxe et basculer entre apxsdi.exe et applisdi.exe, en utilisant ALT+TAB Une fois que vous aurez constaté ces différences, vous consulterez les fichiers .rh et .rc du répertoire applisdi, pour les comparer aux mêmes fichiers, du répertoire modelsdi.

exécution de l'application apxsdi.exe (projet modifié)

fichier apxsdapp.rh du répertoire applisdi (projet modifié)

fichier apxsdapp.rc du répertoire applisdi (projet modifié)

Le projet initial et le projet modifié

On possède maintenant 2 projets, le projet initial et le projet modifié, chacuns situés dans un répertoire distinct.

Cette manière de procéder est une sécurité, car elle vous évitera de tout perdre, si vous devez revenir à une étape précédente, pour cause d'erreur incorrigible ! C'est d'ailleurs ce qu'il se passe toujours au début, et c'est bien normal.

Il faut maintenant faire des modifications dans la source apxsdapp.cpp, pour que l'on puisse définir les actions, qui seront éffectuées, quand on activera des items du menu.

Consultez le lien suivant, qui explique comment modifier la table de réponse aux événements associés aux items d'un menu.

suivant :Comment ajouter simplement du code dans l'exemple apxsdi

retour dans le sommaire du cours winweb du site studyvox