Programmation MFC. Renaud PÉTERI Dahbia SEMANI-DELMI. Introduction aux MFC



Documents pareils
Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

MAÎTRISE DE L ENVIRONNEMENT WINDOWS VISTA

Organiser le disque dur Dossiers Fichiers

Outlook Présentation.

Plan de formation des Personnels en CUI-CAE Année

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

Le cas «BOURSE» annexe

Guide d installation CLX.PayMaker Office (3PC)

Le cas «BOURSE» annexe

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Comment accéder à d Internet Explorer

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Créer et partager des fichiers

Découvrez Windows NetMeeting

Atelier Le gestionnaire de fichier

La messagerie électronique

Contenu Microsoft Windows 8.1

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Une ergonomie intuitive

IUT BREST UN LOGICIEL SCADA : PC VUE 2010 DEP.GMP

Bien programmer. en Java ex. couleur. Avec plus de 50 études de cas et des comparaisons avec C++ et C# Emmanuel Puybaret.

Formation Word/Excel. Présentateur: Christian Desrochers Baccalauréat en informatique Clé Informatique, 15 février 2007

Séminaire d information MIGRATION WINDOWS 7 ET OFFICE 2010

Service On Line : Gestion des Incidents

Caisses Sociales de Monaco - Déclarations de Salaires DIDACTICIEL. Version 3.2

L accès à distance du serveur

A C T I V I T É S CE QUE JE CONNAIS CONTEXTE PROFESSIONNEL. Quel est l élément essentiel du poste informatique? ...

supérieure Vous ne connaissez pas le numéro de version de votre application?

Access 2007 FF Access FR FR Base

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

Lutter contre les virus et les attaques... 15

Mode Opératoire Windows XP

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Manuel du logiciel PrestaTest.

UserLock Quoi de neuf dans UserLock? Version 8.5

ACCUEIL / Introduction. Introduction. Présentation de StarBoard Software Éléments de l écran Guide de démarrage rapide

BIRT (Business Intelligence and Reporting Tools)

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

Contenu Windows 8 MODULE 1 AVANT-PROPOS MODULE 2 INTRODUCTION À WINDOWS 8 MODULE 4 APPLICATIONS WINDOWS 8 PARTIE 1 MODULE 3 PARAMÈTRES DE WINDOWS 8

Utiliser SQL Server 2008 R2 Reporting Services comme source de donne es pour Microsoft Excel

Cegid Business Line. Version 2008 Release 2. Service d'assistance Téléphonique

Mon aide mémoire traitement de texte (Microsoft Word)

Initiation à Excel. Frédéric Gava (MCF)

TD3 - Facturation avec archivage automatisé

Your Detecting Connection. Manuel de l utilisateur. support@xchange2.net

Animation Shop PREAMBULE... 2 CONTRAINTE... 2 CREER UNE ANIMATION... 2 AJOUTER DES IMAGES... 3 ENREGISTRER UNE ANIMATION... 3

GUIDE D UTILISATION DU TABLEAU BLANC INTERACTIF EBEAM EDGE

Effectuer une sauvegarde avec Nero BackItUp

Cahier n o 6. Mon ordinateur. Fichiers et dossiers Sauvegarde et classement

Table des matières ENVIRONNEMENT

Conférence et partage avec NetMeeting

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

La Clé informatique. Formation Excel XP Aide-mémoire

Windows 8 : une petite révolution? 9. Démarrer Windows Accéder au Bureau à la connexion 13. Ouvrir ou activer une nouvelle session 13

Chapitre 1 L interface de Windows 7 9

Pré-requis de création de bureaux AppliDis VDI

Diffuser un contenu sur Internet : notions de base... 13

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Armand PY-PATINEC 2010

Utilisation de la Plateforme Office365 et d Oultlook Web App

Banque d images SVT. Créer et utiliser une banque d images avec Picasa 2. Version anglaise -Windows 98. Banque photo en SVT : page 1 /14

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

KIELA CONSULTING. Microsoft Office Open Office Windows - Internet. Formation sur mesure

GUIDE Excel (version débutante) Version 2013

Créer le schéma relationnel d une base de données ACCESS

Créez des étiquettes avec Microsoft Word et Excel (Versions Windows 10 et 11)

Guide d usage pour Word 2007

Europresse.com. Pour les bibliothèques publiques et de l enseignement. Votre meilleur outil de recherche en ligne. Guide version 1.

FORMATIONS INFORMATIQUE

Windows Internet Name Service (WINS)

Formation. Module WEB 4.1. Support de cours

Introduction à Windows Script Host DescoDev

13) Calibrage du tableau Interwrite Dualboard

COURS WINDEV NUMERO 3

Utilisation du logiciel ModellingSpace

FileMaker Pro 12. Guide de l utilisateur

PRÉSENTÉ PAR : NOVEMBRE 2007

Rapport financier électronique

Préparation à l examen EFA en Macro

Connecteur Zimbra pour Outlook 2007 et 2010 (ZCO) w

Guide de l administrateur DOC-OEMCS8-GA-FR-29/09/05

Progression secrétariat

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

SQL Server 2012 Implémentation d'une solution de Business Intelligence (Sql Server, Analysis Services...)

L externalisation de vos logiciels entreprises : une solution aux problèmes de coûts, de sécurités et de réactivités

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Comment créer et utiliser une fonction

MIGRATION DE THUNDERBIRD VERS OUTLOOK mardi 16 octobre 2012

Table des matières A. Introduction... 4 B. Principes généraux... 5 C. Exemple de formule (à réaliser) :... 7 D. Exercice pour réaliser une facture

Tutoriaux : Faites vos premiers pas avec Microsoft Visio 2010

Manuel utilisateur Centre de Messagerie

MEGA ITSM Accelerator. Guide de démarrage

BUREAUTIQUE. 1 Journée. Maîtriser les fonctions de base du logiciel

Leica Application Suite

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

Transcription:

Programmation MFC Renaud PÉTERI Dahbia SEMANI-DELMI 1 Introduction aux MFC! Programmation Windows " La fonction WinMain() " La fonction WndProc()! Appels de l API Windows (Interface de programmation d applications Windows) " Ecriture des applications parfois compliquée car - Les fonctions de l API sont très nombreuses - Plusieurs types de messages - Durée de vie des variables -> utilisation de nombreuses variables globales! Utilisation des MFC (Microsoft Foundation Classes) Développement dans un environnement de programmation Orientée Objet 2

MFC! MFC : Classes d une bibliothèque de programmation qui encapsule l API Windows " Utilisation plus facile de l API " Développement plus rapide et plus efficace! Elles automatisent de nombreuses actions! Elles masquent certaines opérations de bas niveau # " L accès direct à la boucle de gestion de message n est plus possible " Chaque message que l on souhaite traiter déclenche un callback! Les appels de l API sont remplacés par des appels aux fonctions membres (méthodes) des objets crées à partir des classes MFC 3 Les classes MFC! Plusieurs centaines de classes MFC! Utilisation directe de certaines classes MFC! Utilisation de classes dérivées de certaines classes MFC! Exemples de classes " Classe simple, CPoint : encapsule un objet point (coordonnées x,y) Addition, conversion, " Classe complexe, CWnd : encapsule les fonctionnalités d une fenêtre! Convention " Les classes MFC portent des noms qui commencent par C, comme CPoint ou CWnd " Les données membres d'une classe MFC commencent par le préfixe m_ 4

Structure d un programme MFC! Un programme MFC repose principalement sur deux classes " La classe d application : CWinApp Lancement, initialisation, exécution et fermeture de l application " La classe de fenêtre : CFrameWnd Création et gestion d une fenêtre (principale) de l application! Les objets de ces classes ont un rôle réduit au minimum! Générés le plus souvent par l assistant (Wizard) 5 Architecture Document/Vue! Les MFC sont essentiellement destinée au développement d applications disposant d interface graphique! Considérer les données brutes de l application et leur visualisation comme des «objets» différents! Besoin d avoir plusieurs visualisations ou représentations des mêmes données! Principe de l architecture Document/Vue Séparer le traitement et la manipulation des données de la représentation de celles-ci. 6

! Exemple Architecture Document/Vue " Document : données correspondant à des formules mathématiques dans un tableur " Vues Vue édition Vue résultat Vue graphique 7 Le concept Document/Vue! Encapsuler les données brutes dans un objet de la classe CDocument (ou classe dérivée de CDocument)! Encapsuler les fonctionnalités d affichage dans un objet de la classe CView (ou classe dérivée de CView)! Les méthodes de la classe CDocument manipulent les données brutes Chargement depuis un fichier, ajout/suppression des données, tri, etc.! Les méthodes de la classe CView se chargent de la visualisation des données Fonctions graphiques, mise à l échelle, couleurs, etc. 8

Documents! Un document désigne l ensemble des données d une application (données brutes)! Recouvre des données de natures diverses " du texte ou données d un tableur " données relatives à un jeu " connexion à une source de données distante (interface SQL) " etc.! Les données d un document doivent être privées et l accès se fait via des méthodes publiques 9 Interfaces de Document! Les applications SDI (Single Document Interface) " Les programmes ne peuvent ouvrir qu un seul document à la fois " Exemple d une application SDI : WordPad! Les applications MDI (Multiple Document Interface) " Les programmes peuvent ouvrir plusieurs documents à la fois " Les documents ouverts peuvent être du même type ou de types différents " Exemples d applications MDI : Microsoft Word, Microsoft Excel 10

Vues! Proposent un mécanisme permettant d afficher tout ou partie des données stockées dans un document! Définissent le mode d affichage dans une fenêtre! Définissent le mode de communication avec l utilisateur 11 Fenêtre cadre! La vue d un document s affiche dans une fenêtre cadre (Frame Window)! La fenêtre de vue occupe la zone client d une fenêtre cadre! Les fenêtres cadre qui hébergent les vues sont des objets de la classe " CFrameWnd, pour les applications SDI " CMDIChildWnd, pour les applications MDI! À un document on peut associer plusieurs vues " Plusieurs présentations possibles des mêmes données d un document! Une vue n est associée qu à un seul document 12

Documents, Vue et fenêtres cadre! Une vue affiche parfois une partie seulement des données Données Objet Vue Objet Document Objet Fenêtre cadre 13 Modèles de Document! Gèrent la coordination entre les documents, les vues et les fenêtres cadre! Un modèle pour chaque type de document! Un modèle suffit pour gérer des documents d un même type! En général " une application crée un modèle de document " qui coordonne l affichage des données d un document " dans une vue " à l intérieur d une fenêtre cadre 14

Modèle/Document/Vue/Fenêtre cadre Objet Application Crée Objet Modèle de document Crée Objet Document Crée Fenêtre cadre Crée Objet Vue Pointe sur 15 Classes de modèles de document! La classe CDocTemplate permet de définir les modèles de document! Deux classes dérivées " Applications SDI : la classe CSingleDocTemplate " Applications MDI : la classe CMultiDocTemplate 16

Sérialisation! Permet la sauvegarde et la restauration binaire d objets dans (ou à partir) d un fichier! Une classe sérialisable contient dans sa définition la fonction virtual void Serialize(CArchive& ar); " Appelée pour effectuer les opérations d entrées/sorties sur les membres données de la classe " L objet de type CArchive détermine s il s agit de l entrée ou de la sortie! La Classe CDocument contient dans sa définition les fonctionnalités de sérialisation 17 Création dynamique des objets! Programme Document/Vue en cours d exécution # création dynamique des objets document, vue et fenêtre cadre! Utilisation de macros de création dynamique dans les classes dérivée de CFrameWnd, CDocument, CView 18

Macros de création dynamique! DECLARE_DYNCREATE(Nom_classe) dans la déclaration de classe (fichier.h)! IMPLEMENT_DYNCREATE(Nom_classe, Nom_classe_base) dans le fichier.cpp! Création dynamique d un objet d une classe en cours d exécution RUNTIME_CLASS(Nom_classe)->CreateObject(); 19 Programmes Document/Vue! Une application Document/Vue contient au moins quatre classes dérivées des classes " CWinApp " CFrameWnd " CDocument " CView! Les classes sont définies dans des fichiers séparés de déclaration (.h) et d implémentation (.cpp)! Plusieurs variantes des classe de «vue» apportent des fonctionnalités prédéfinies (ex. CEditView) 20

Relations entre classes Les classes fondamentales d une application SDI classes MFC CObject CCmdTarget CWinThread CWnd CDocTemplate CDocument CWinApp CFrameWnd CView CSingleDocTemplate CMyApp CMyWnd CMyView CMyDoc classes de vos applications 21 Quelques fonctions utiles! Fonctions de dessin : la classe CDC (classes dérivées CPaintDC, CCleintDC, CWindowDC)! Fonctions : la classe CWnd (classes dérivées CFrameWnd, CView)! Les fonctions relatives aux menus : la classe CMenu! Fonctions relatives aux boites de dialogue : la classe CDialog! Les contrôles et les classes MFC correspondantes Bouton Zone de texte Zone de liste Barre de défilement CButton CEdit CListBox CScrollBar22 22

L assistant AppWizard! Crée le squelette complet d un programme Document/Vue! Définit automatiquement les classes nécessaires CWinApp, CFrameWnd, CDocument, CView! Indique l endroit où vous devez insérer le code spécifique à l application 23 L assistant ClassWizard! Permet d étendre et de personnaliser les classes de vos programmes! Permet de créer des nouvelles classes ou de dériver des classes à partir des classes MFC! Ajoute de nouveaux membres (variables ou fonctions) aux classes! Génère les squelettes de code des callbacks correspondant aux messages auxquels le programme souhaite réagir 24

Exemple d une application SDI! Editeur de texte 25 Exemple d une application SDI! Editeur de texte (Etape 1) 26

Exemple d une application SDI! Editeur de texte (Etape 2)! Editeur de texte (Etape 3) 27 Exemple d une application SDI! Editeur de texte (Etape 4) 28

Exemple d une application SDI! Editeur de texte (Etape 5) 29 Exemple d une application SDI! Editeur de texte (Etape 6) 30

Exemple d une application SDI! Editeur de texte (Etape 6 - Suite) 31 Exemple d une application SDI! La sortie produite par AppWizard Affichage des fichiers Affichage des classes 32

Exemple d une application SDI! Exécution du programme! Toutes les commandes des menus Fichier, Edition et Affichage sont parfaitement opérationnelles 33 La fenêtre cadre! La fenêtre cadre de l application du programme SDI est un objet de la classe CFrameWnd class CMainFrame : public CFrameWnd { protected: // create from serialization only CMainFrame(); DECLARE_DYNCREATE(CMainFrame) // Attributes // Operations // le reste de la classe }; 34

La classe application! La classe application de notre programme est dérivée de CWinApp class CEditeurTexteApp : public CWinApp { CEditeurTexteApp(); // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CEditeurTexteApp) virtual BOOL InitInstance(); //}}AFX_VIRTUAL // Implementation // le reste de la classe }; 35 La classe document class CEditeurTexteDoc : public CDocument { protected: // create from serialization only CEditeurTexteDoc(); DECLARE_DYNCREATE(CEditeurTexteDoc) // Attributes // Operations // Overrides // ClassWizard generated virtual function overrides virtual BOOL OnNewDocument(); virtual void Serialize(CArchive& ar); //Implementation // le reste de la classe }; 36

La classe vue class CEditeurTexteView : public CEditView { protected: // create from serialization only CEditeurTexteView(); DECLARE_DYNCREATE(CEditeurTexteView) // Attributes CEditeurTexteDoc* GetDocument(); // Operations // Overrides // ClassWizard generated virtual function overrides virtual void OnDraw(CDC* pdc); virtual BOOL PreCreateWindow(CREATESTRUCT& cs); // le reste de la classe }; 37