Utilisation générale de Visual C++ 6.0

Écrit le 24/04/2004 par BlackSmurf
Dernière mise à jour : 02/02/2006

Présentation générale

VC++ est le meilleur outils de programmation concernant la programmation Windows : forcement c'est Microsoft qui l'édite !

Bien alors nous allons d'abord voir comment travail le compilateur VC++.

VC++ fonctionne sous le système de "projet". Un projet est sous la forme de fichier DSP. VC++ créé un fichier DSP pour le projet puis après
il créé aussi un fichier DSW pour enregistrer l'espace de travail de VC++. C'est à dire les fenêtres ouvertes du projet leur position dans VC++ etc.

Ensuite il reste d'autres fichiers de configuration général du projet et les fichiers sources (C/CPP/H/HPP)

http://www.game-lab.com/images/tuts/vcpp6/vcpp603.jpg

Visual C++ présente une interface générale, avec d'un coté l'éditeur texte du code source et de l'autre des onglets concernant le projet, les fichiers inclus dans le projet etc. Dans les barre d'outils vous trouverez certaines fonctionnalités bien utile, mais nous verrons ca plus tard.

http://www.game-lab.com/images/tuts/vcpp6/vcpp604.jpg

Pour créer un nouveau projet, il suffit d'aller dans le menu sur File -> New. Ainsi la boite suivante apparaît :

http://www.game-lab.com/images/tuts/vcpp6/vcpp602.jpg

Tout en haut se trouve des onglets. Le premier s'occupe de la création de fichier seul tel que les fichiers C/CPP/H/HPP.
Le deuxième onglet nous interesse plus. Il va nous permettre de créer des projets. On trouve plusieurs type. Je vais expliquer les plus utiliser.

[list]
ATL COM AppWizard permet de créé un composant COM. À quoi sert un composant COM ? Il s'agit soit d'un service NT (EXE) soit alors d'une DLL. Ce programme va utiliser la technologie COM qui elle même est une technologie de communication entre objets. Ainsi avec on peut créer des objets ActiveX pour des applications EXCEL, Internet Explorer, etc...

ISAPI Extension Wizard permet de créé un fichier DLL qui va servir pour l'Internet. Le but de cette DLL est le même qu'un fichier PHP ou ASP. En créant ce type de projet, on pourra par exemple créé une sorte de script qui sera hébergé sur un serveur IIS et l'appellé par une URL par exemple avec la méthode GET "http://localhost/monfichier.dll?fenetre=1¶m=100&login=smurf".

MFC... Ces type de projet permettent de créer des programmes en utilisant la librairie de Microsoft MFC. Cette librairie permet une plus grande souplesse pour créer et utiliser les objets Windows. On s'en sert pour créer des applications graphique sous Windows. Toutefois MFC possède quelques problème en ce qui concerne les Threads. Il y aurait des fuites... Mais je n'en sais pas plus.

Win32... Ces types de projet est identique au MFC sauf qu'au lieu d'utiliser les classes MFC on utilise le langage même de windows l'api WIN32. L'avantage est que Win32 est très performant et puissant, seulement il est très très long à mettre en place, ne serait-ce que pour créer une simple fenêtre Windows.
Pour créer un programme simple en Win32 il faut utiliser "Win32 Application". Le type "Win32 Console Application" créera une application avec une fenêtre DOS.
[/list]

Donc pour résumer si vous souhaitez créer un programme avec fenêtre Windows etc. il faudra utiliser l'option MFC AppWizard (exe) qui est plus simple de programmation. Seulement cela reste un travail laborieux.

Le moteur OPENGEL (moteur 3D que je développe) quant à lui sera programmé je pense en ATL COM AppWizard (en cours). Ainsi sera créé un fichier DLL qui contiendra le moteur principal. Cette DLL pourra être utiliser dans tout type de langage plus tard : C#, Visual Basic, C++, etc. (technologie COM).

Comment marche les projets ? Tout projet créé un fichier au nom du projet donné suivi de .CPP. Dans ce fichier se trouvera en général la fameuse fonction main.

http://www.game-lab.com/images/tuts/vcpp6/vcpp600.jpg

Nous programmerons en C++ et pour ce faire il faut penser sur le principe de "module". En C++ on programme en créant des classes. Une classe possède deux fichiers : son fichier de déclaration (.H ou .HPP) et son fichier de définition (.C ou .CPP). Si par exemple aujourd'hui je souhaite créé une classe permettant de gérer les chaines de caractères simplement (en C++ faut passer par des pointeurs et tableau), il faudra créé une classe myString par exemple.

Alors comment on va créé ces deux fichiers ??? A la main ? Il ne vaut mieux pas. Visual C++ possède des mini assistants permettant d'effectuer certaines tâches. Comme notamment créer de nouvelles classes.

Création d'un nouvelle classe

Pour créer une nouvelle classes, il faut passez dans l'onglet ClassView de gauche de Visual C++.

http://www.game-lab.com/images/tuts/vcpp6/vcpp601.jpg

On se retrouve alors dans ce type de schèma. On voit notamment les classes déja existantes dans le projet, et dans chaques classes on retrouve toutes les méthodes (ou fonctions) et propriétés (ou variables) de la classe ouverte. Visual C++ affiche un cadena à coté des méthodes ou propriétés qui sont privés.

En faisant un clique droit sur le nom du projet, on obtient un menu déroulant.

http://www.game-lab.com/images/tuts/vcpp6/vcpp605.jpg

En sélectionnant New Class... on va créer notre nouvelle classe...

http://www.game-lab.com/images/tuts/vcpp6/vcpp606.jpg

Dans cette nouvelle fenêtre on va donner le nom de notre Classe. Ici on prend l'exemple de tout àl'heure "myString". On peut voir à présent que notre classe vient d'être créer.

http://www.game-lab.com/images/tuts/vcpp6/vcpp607.jpg

On voit notamment les méthodes par défaut : le constructeur et le destructeur de notre classe. En refaissant un clique droit sur notre classe on peut voir un nouveau menu apparaître

http://www.game-lab.com/images/tuts/vcpp6/vcpp608.jpg

Dans ce menu on peut les options Add Member Function qui va ajouter une nouvelle méthode (ou nouvelle fonctions) et l'option Add Member Variable qui va ajouter une nouvelle propriété (ou nouvelle variable).

Cliquons pour tester sur Add Member Function....

http://www.game-lab.com/images/tuts/vcpp6/vcpp609.jpg

On peut voir ici qu'il faut saisir le type de notre nouvelle fonction ainsi que sa déclaration (nom de la fonction + paramètres)
Ensuite on peut voir le type d'accès. Ici on le laisse "Public". Puis on fait OK.

Ainsi VC++ nous amène directement à la définition de la fonction.

http://www.game-lab.com/images/tuts/vcpp6/vcpp610.jpg

Voila pour ce qui est de la création de nouvelle classes. Vous pouvez néamoins ajouter manuellement des fichiers déjà existant dans votre projet.
Pour cela, retournez dans l'onglet FileView de votre projet, puis fait un clique droit sur le dossier Source Files si vous souhaitez ajouter un fichier C/CPP et le dossier Header Files si vous souhaitez ajouter un fichier H/HPP.

http://www.game-lab.com/images/tuts/vcpp6/vcpp611.jpg

Configuration du projet

VC++ peut compiler votre projet sous deux formes. Soit la forme "Debug" afin de pouvoir au mieux utiliser le débuggage lors d'erreur et la forme "Release" pour la version finale de votre projet. Pour passer de l'un à l'autre, il faut cliquez sur Configuration dans le menu Build de VC++.

http://www.game-lab.com/images/tuts/vcpp6/vcpp612.jpg

Passons maintenant à la configuration générale de votre projet. Pour y accèder faite un clique droit sur votre Projet dans l'onglet FileView, puis sélectionnez Settings. Un écran ressemblant à celui ci apparaît :

http://www.game-lab.com/images/tuts/vcpp6/vcpp613.jpg

Vous verrez une liste d'onglet concernant la configuration général de votre projet. Un des onglet va retenir notre attention. Il s'agit de l'onglet Link. Cette onglet correspond à l'étape Edition de liens et c'est ici que l'on va "attacher" les fichiers (Bibliothèques) nécessaires à notre projet. Pour le moteur OpenGEL par exemple, c'est ici qu'il faudra attacher les bibliothèques d'OpenGL.

http://www.game-lab.com/images/tuts/vcpp6/vcpp614.jpg

Dernier point pour ce premier tutorial sur VC++, la compilation et l'execution de votre projet.

Pour compiler votre projet, vous trouverez dans le menu Build tout ce dont vous aurez besoin.
Build monprojet.exe F7 compile et créé votre projet
Rebuild All recompile tous les fichiers (idéal pour faire une compilation propre)
Clean efface tous les fichiers de compilation (fichiers .OBJ)

Tout en bas vous trouverez un journal de log de la compilation. Il vous dira si la compilation c'est effectué avec succès ou bien si il a trouvé des erreurs.

http://www.game-lab.com/images/tuts/vcpp6/vcpp615.jpg

Vous pouvez double cliquez sur les lignes d'erreur pour qu'ils vous amène directement à l'erreur dans tel ou tel fichier.

Voila that's all folks pour aujourd'hui !!