View
110
Download
0
Category
Preview:
Citation preview
Programmation Windows
Initiation à l’utilisation de Visual C++
Franck Rubi
LaBRI
rubi@labri.fr
Décembre 2000
Décembre 2000 Franck Rubi, LaBRI 2
Première Partie
Quelques rappels de C++Découverte de l’environnement VC++Développer sous VC++Gestion de l’interface utilisateurMFC et Structures de données SérialisationExercice: Un mini « paint »
Décembre 2000 Franck Rubi, LaBRI 3
Quelques rappels de C++
Programmation ObjetClasses, champs, méthodes, encapsulation
GénéricitéPatron de classe « template »
Héritage et PolymorphismeHéritage simple ou multiple, fonctions
« virtual »
ExceptionsDéfinitions, génération « throw », capture
« try, catch »
Décembre 2000 Franck Rubi, LaBRI 4
Découverte de l’environnement VC++
Modèle classiqueprogrammes, bibliothèques, ressources, aides,
makefile
Plusieurs types d ’applications: WIN32 Application en mode console
API WIN32, fenêtre DOS Win32 Application
API WIN32, fenêtre Windows Programmation à l ’aide de la bibliothèque
de classesModèle à base de composants, internet
Décembre 2000 Franck Rubi, LaBRI 5
Découverte de l ’environnement VC++
Notion de projet1 projet = 1 dossier
sources (h,cpp), makefile (dsp,dsw), ressources(rc, ico, rc2) Aides (hpj, bmp, rtf)readme.txtdossiers DEBUG, RELEASE…
Avec dossier debug : plus de 7Mo
Décembre 2000 Franck Rubi, LaBRI 6
Découverte de l ’environnement VC++
L ’environnement de programmation contient: Un éditeur de texte avec fenêtre « Workspace » Compilateur, éditeur de liens Un outil de debug symbolique puissant Un éditeur de ressources Des assistants:
de création de projet (APP WIZARD) de création de classes, de gestion d’événements,...
Une aide en ligne importante Différents outils liés (install shield, visual source
safe, …)
Décembre 2000 Franck Rubi, LaBRI 7
Environnement VC++
Décembre 2000 Franck Rubi, LaBRI 8
Assistant de création d’application:
Découverte de l ’environnement VC++
Décembre 2000 Franck Rubi, LaBRI 9
Développer sous VC++
1. Création d ’une application console (fenêtre DOS)
// appliconsole.cpp : Defines the entry point for the console application.
#include "stdafx.h"int main(int argc, char* argv[]){
printf("Hello World!\n");return 0;
}
Décembre 2000 Franck Rubi, LaBRI 10
Développer sous VC++
Décembre 2000 Franck Rubi, LaBRI 11
Développer sous VC++
2. Création d’une application s’exécutant dans une fenêtre WindowsUn extrait:
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // Store instance handle in our global variable
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
{return FALSE;}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd); return TRUE;
}
Décembre 2000 Franck Rubi, LaBRI 12
Développer sous VC++
Décembre 2000 Franck Rubi, LaBRI 13
Développer sous VC++
3. Une application utilisant la MFC Bibliothèque de classes de VC++ 6.0
Microsoft Foundation Classes Architecture document - vue
Fichier Objet « Document »
Sérialisation
Objet « Vue »
Affichage
Utilisateur
Décembre 2000 Franck Rubi, LaBRI 14
Développer sous VC++
Une application MFC - VC++ est: « Simple document » type bloc-notes « Multiple document » par exemple WordDisposent d ’une fenêtre principale avec barre de
menu classique et barre de boutons.
de type « Dialog », sans manipulation de fichier
s ’affiche sous forme d ’une boite de dialogue avec bouton de fermeture.
Décembre 2000 Franck Rubi, LaBRI 15
Développer sous VC++
3. Création d’une application MFCen utilisant l ’assistant de création
d’application6 classes créées:
CAboutDLG : Boite de dialogue Auteur - Version
C…App : La classe principale qui hérite de CWinAppC…Doc : La classe document (Cdocument)C…View : La classe Vue (Cview ou CScrollView)CMainFrame : La fenêtre principale (CMDIFrameWnd)CChildFrame : les fenêtres filles (CMDIChildWnd)
Décembre 2000 Franck Rubi, LaBRI 16
Développer sous VC++
Décembre 2000 Franck Rubi, LaBRI 17
Gestion de l’interface utilisateur
Gestion événements souris et Dessins WM_RBUTTONDOWN, WM_LBUTTONDOWN, WM_MOUSEMOVE, … affichage d ’une boite simple AfxMessageBox(…) Contexte d ’affichage (texte et dessin) Classes CDC et
CClientDCfonctions CDC::TextOut, CDC::MoveTo, CDC::LineTo
Epaisseur et couleur (CPen, COLORREF)
Boites de Dialogue Utilisation de boites prédéfinies (CColorDialog) Création d ’une boite à l ’aide de l’éditeur de ressources
Menu et Barre d’outils
Décembre 2000 Franck Rubi, LaBRI 18
MFC et structures de donnéesDes classes génériques pour les
structures de données: Tableaux dynamiques: CArray
méthodes: GetSize, SetSize, Add, operator[], ...
Listes: CList et variantesméthodes: AddHead, AddTail, IsEmpty
GetHeadPosition, GetNext, RemoveHead, ...
Table de Hashage: Cmapméthodes: SetAt( ARG_KEY key, ARG_VALUE newValue )
InitHashTable( UINT hashSize ), ...
Décembre 2000 Franck Rubi, LaBRI 19
Sérialisation
Permet sauvegarde et restauration de manière simple// CAppliMFCDoc serializationvoid CAppliMFCDoc::Serialize(CArchive& ar){ if (ar.IsStoring())
{// TODO: add storing code here
} else{
// TODO: add loading code here}
}
Exercice
un mini « paint »
Recommended