Programmation Windows Initiation à l’utilisation de Visual C++ Franck Rubi LaBRI rubi@labri.fr...

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