Transcript
Page 1: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

Programmation Windows

Initiation à l’utilisation de Visual C++

Franck Rubi

LaBRI

[email protected]

Décembre 2000

Page 2: 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 »

Page 3: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

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 »

Page 4: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

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

Page 5: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

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

Page 6: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

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, …)

Page 7: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

Décembre 2000 Franck Rubi, LaBRI 7

Environnement VC++

Page 8: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

Décembre 2000 Franck Rubi, LaBRI 8

Assistant de création d’application:

Découverte de l ’environnement VC++

Page 9: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

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;

}

Page 10: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

Décembre 2000 Franck Rubi, LaBRI 10

Développer sous VC++

Page 11: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

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;

}

Page 12: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

Décembre 2000 Franck Rubi, LaBRI 12

Développer sous VC++

Page 13: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

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

Page 14: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

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.

Page 15: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

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)

Page 16: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

Décembre 2000 Franck Rubi, LaBRI 16

Développer sous VC++

Page 17: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

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

Page 18: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

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 ), ...

Page 19: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

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}

}

Page 20: Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr Décembre 2000

Exercice

un mini « paint »


Recommended