Académique Documents
Professionnel Documents
Culture Documents
1 Avant de commencer
Il peut naturellement rester des fautes dinattention. Si tel est le cas, veuillez men excuser.
Important :
ce tutorial a pour but de programmer une interface graphique de faon PRATIQUE sans tomber dans
les considrations techniques les plus pousses.
Il sadresse un large public et je pars du principe que vous tes assez grands pour chercher les
informations complmentaires dont vous aurez besoin, tout seul.
2 Outils
Microsoft Visual C++
3 But
Nous voulons donc raliser une interface graphique permettant dadditionner deux chiffres. Cest totalement inutile,
sauf dans le cas de ce document :
4 Ralisation
4.1 Cration du projet
et dfinissons lui des proprits (ici, donnons lui un nom clair. Cest surtout utile en prsence de nombreux
champs pour sy retrouver) par un clic-droitProprits :
ajouter de la mme faon le deuxime champ (IDC_EDIT_NB2), ainsi quun bouton pour sommer :
Le commentaire gnr est assez (!) clair. En gnral il est indiqu o insrer votre code par un //TODO :
Avant de commencer, il va falloir initialiser les champs de linterface graphique. En effet, la valeur dun lment
graphique est divise en 2 variables :
une variable de type CEdit (car nous manipulons un champ) qui dfinit ce qui va
tre affich dans linterface
une variable de type int qui va contenir loprande manipuler
En effet, on ne peut pas manipuler directement le contenu du champ. On est oblig de le mettre jour partir
dune seconde variable selon le schma suivant (sur lequel nous reviendrons) :
CEdit
UpdateData(TRUE)
UpdateData(FALSE)
int
Ajouter 2 variables :
(ainsi, UpdateData(TRUE) copie les variables de types Control dans les variables de types Value)
Jusqu obtenir :
Ajoutons une mthode appele lors de lappuis sur le bouton somme. Retourner sur linterface graphique :
slectionner le bouton somme et la mthode dappel (ici un simple clic). Faire Add function :
Cette mthode sappellera OnButtonSomme. Elle est automatiquement insre l o il faut (dans le .cpp et le
.h).
10
finalement, cliquer sur le bouton Sommer ! appelle OnButtonSomme() puis Somme(int , int) de la
classe CMFCTestDlg.
La mthode Somme() contient le code suivant :
int CMFCTestDlg::Somme(int a, int b)
{
return(a+b);
}
11
Corsons un peu le tout nous allons voir 2 mthodes pour afficher le rsultat :
// le rsultat du calcul
// la valeur de la chaine de rsultat
12
4.4.2
Nous allons dj crer la bote de dialogue qui va apparatre lors de lappui sur somme.
13
Cette fois, nous najouterons que la variable de type Value ! En effet, sagissant dun champ de rsultat,
lutilisateur naura pas entrer un chiffre, donc nous nauront pas besoin de faire un UpdateData(TRUE).
Allez dans le classwizard. Vous allez automatiquement gnrer la classe C++ lie la bote de dialogue
nouvellement cre :
14
Une nouvelle classe (un fichier DlgSomme.cpp et un fichier DlgSomme.h) ont t crs. Allons jeter un coup
dil dedans.
Les mthodes qui nous intressent sont le constructeur et OnInitDialog().
Pour pouvoir afficher le rsultat dans le champ, il va falloir transmettre le rsultat la bote de dialogue. Nous
pouvons par exemple modifier le constructeur
CDlgSomme::CDlgSomme(CWnd* pParent /*=NULL*/)
:CDialog(CDlgSomme::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgSomme)
m_edit_result_v = 0;
//}}AFX_DATA_INIT
}
qui devient
CDlgSomme::CDlgSomme(CWnd* pParent, int insertres)
:CDialog(CDlgSomme::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgSomme)
m_edit_result_v = insertres;
//}}AFX_DATA_INIT
}
// standard constructor
devient
class CDlgSomme : public CDialog
{
// Construction
public:
CDlgSomme(CWnd* pParent = NULL, int insertres = 0);
...
// standard constructor
15
// le rsultat du calcul
// la valeur de la chaine de rsultat
5 Annexe
5.1 Rduire la taille de lexcutable compil
Par dfaut, Visual C compile en mode debug. Pour notre exemple, lexcutable gnr pse prs de 1.4 Mo. Pour le
rduire, il faut passer en mode release : dans le menu Build, slectionner Set Active Configuration et choisir le
mode release. La taille de votre excutable passe alors 120Ko environ.
Statique
Dynamique
Debug
1400 Ko
120 Ko
Release
105 Ko
20 Ko
16
DLL)
16/12/1999
16/12/1999
16/12/1999
16/12/1999
779
995
295
403
536
383
000
216
octet(s)
octet(s)
octet(s)
octet(s)
(V.5.00.2191.1
(V.6.00.8665.0
(V.6.10.8637.0
(V.5.00.2180.1
Windows 2000)
DLL du client
MFCDLL Shared
Microsoft (R)
DLL client de
Appels indirects
-------------------------------------------------------------c:\winnt\system32 (2 DLL)
dll-32 gdi32.dll
16/12/1999
dll-32 ntdll.dll
16/12/1999
17