Framework MFC

  • View
    72

  • Download
    0

Embed Size (px)

Transcript

Dmarrer avec les MFC avec Visual studio 2005 Volume 2

Par FarscapeDate de publication : 8 Novembre 2006 Dernire mise jour : 4 Novembre 2006 Sources :http://farscape.developpez.com/Samples/SampleMDI-1.zip

http://farscape.developpez.com/Samples/SampleMDI-2.zip

Ce tutoriel fait suite au document du mme nom dj publi, contrairement au premier volume jutiliserai la plateforme de dveloppement Visual studio 2005 Pour continuer notre apprentissage du cadre de travail (FrameWork) des MFC.

Dernire Mise jour le 04/11/2006 16:55:00

-1-

I. Autres Modles dapplication......................................................................................... 4 Une application bote de dialogue :.............................................................................. 4 Gnration du projet : .................................................................................................. 4 Conclusions : ................................................................................................................. 8 II. Le modle dapplication MDI (multiple document interface) : ............................. 9 II-A. Gnration du projet :........................................................................................... 10 II-A-1. Mode de fonctionnement du modle MDI :.............................................. 15 II-A-2.Quelques remarques :.................................................................................... 16 II-B. Etude des lments composants le framework............................................. 17 II-B-1. La classe CMDIFrameWnd ........................................................................... 17 II-B-2. La classe CMDIChildWnd ............................................................................. 18 II-B-2-a. Exemples :................................................................................................. 18 II-B-2-b. Quelques fonctions utiles : .................................................................. 18 II-B-3. Squences de cration des objets dans une architecture MDI : ....... 19 II-B-3-a. Squences sur la cration dun document....................................... 19 II-B-3-b. Squences sur la cration dune fentre cadre MDI et sa vue ... 20 II-B-3-c. Squences dinitialisation dune vue ................................................. 22 II-B-4. Routages des messages : les classes du frame work : ....................... 23 II-C. Travailler avec plusieurs vues dans le modle MDI ..................................... 24 II-C-1. Les modifications avec lditeur de ressources dans le dtail : ....... 24 II-C-2. Quelques remarques gnrales sur lenvironnement de dveloppement............................................................................................................. 27 II-C-2-a. En ce qui concerne la modification des proprits des contrles : ................................................................................................................. 27 II-C-2-b. Diffrences sur la gnration de code avec Visual 6.: ................. 28 II-C-2-c. Gnration de la classe CFormView associe :.............................. 28 II-C-3. Paramtrage du document Template dans InitInstance ...................... 30 II-C-3-a. Notes : ........................................................................................................ 30 II-C-4. Excutons notre application : ..................................................................... 31 II-C-5. Dtails des modifications :........................................................................... 33 II-C-6. Conclusions :................................................................................................... 35 II-D. Association de plusieurs vues sur un mme document :.......................... 36 II-D-1. Introduction :................................................................................................... 36 II-D-2. Mise en place : ................................................................................................ 36 II-D-2-a. Les tapes du traitement :.................................................................... 37 II-D-2-b. Le rsultat : .............................................................................................. 38 II-D-3. Amlioration du traitement : ....................................................................... 39 II-D-4.Cration dune nouvelle fentre : ............................................................... 43 II-D-4-a. Quelques remarques: ............................................................................ 43 II-D-4-b. Conclusions : .......................................................................................... 43 II-E-1. Validit dun objet :......................................................................................... 45 II-E-2. Recherche dune fentre ............................................................................... 46 II-E-2-a. Fentres faisant parties du mme document :................................ 46 II-E-2-b. Cas de fentres issues de plusieurs documents :......................... 50 II-E-2-b-1. Rcuperer le cadre MDI ou la fentre active de lapplication : .................................................................................................................................. 51 II-F. Mise en place dune barre doutils dans un cadre MDI. ............................... 52

Dernire Mise jour le 04/11/2006 16:55:00

-2-

II-F-1. Gnration de la barre doutils :.................................................................. 52 II-F-2. Modification de la classe gnre :............................................................ 54 II-F-3. Ajouter des fonctions de rponses laction des boutons : .............. 56 II-F-3-a. Insertion du menu pour correspondance avec la barre doutils : ...................................................................................................................................... 57 II-F-4. Gestion de lactivit du bouton : ................................................................. 59 II-F-5. Personnaliser la barre doutils : .................................................................. 60 II-F-5-1. Insrer des boutons dynamiquement dans la barre doutils :..... 62 II-F-5-1-a. Utilisation : ......................................................................................... 66 II-F-5-1-b. Initialisations dans la classe CChildSampleView: .................. 67 II-F-5-1-c. Le rsultat :......................................................................................... 68 II-F-5-2. Barre doutils flottantes et positionnement :.................................... 68 II-F-5-3. Boutons tats : ...................................................................................... 70 II-F-5-3-a. Le rsultat : ........................................................................................ 72 II-G. Mise en place dune barre de dialogue dans un cadre MDI. ...................... 73 II-G-1. Problmes typiques avec la barre de dialogue...................................... 75 II-H. Mise en place dune barre de sparation dans un cadre MDI. (splitter). 80 III. Simplifier lajout dlments dans le cadre de travail (Framework). .............. 85 III-A. Spcifier les lments du cadre fille directement dans InitInstance ..... 85 III-A-1. Dtails du code.............................................................................................. 86 III-A-2. En Rsum : ................................................................................................... 92 III-A-3. Rsultat final :................................................................................................ 93 Remerciements .................................................................................................................... 94

Dernire Mise jour le 04/11/2006 16:55:00

-3-

Le FrameWork deuxime partieI. Autres Modles dapplicationParmi les modles dapplications existants il nous reste voir le modle de projet bote de dialogue et le modle MDI. Une application bote de dialogue : Ce type dapplication ne comportera quune seule fentre, dans ces conditions on peut se poser la question sur la diffrence avec un projet SDI. Voici quelques lments de rflexions pour mieux cerner les diffrences : Une bote de dialogue : Nutilise pas larchitecture document vue (a tombe presque sous le sens !). Ne permet pas en standard la gestion dune barre doutils. Bien que la boite de dialogue puisse tre redimensionne par lutilisateur celle-ci ne grera pas dascenseurs sur la fentre. En cas de changement darchitecture, exemple : lapplication doit utiliser plusieurs vues et donc passer dans le modle de projet MDI, les modifications du code seront plus contraignantes que pour un modle SDI. Gnration du projet : Procdons maintenant la gnration du projet laide du gestionnaire de projet : Avec Visual 2005 slectionnez le menu File new project slectionnez le template MFC Application, remplissez le nom et le rpertoire de destination du projet.

Dernire Mise jour le 04/11/2006 16:55:00

-4-

Slectionnez la ligne Type dapplication : Puis les options : Base sur des botes de dialogue Langue de ressources: Franais.

Dernire Mise jour le 04/11/2006 16:55:00

-5-

Longlet suivant concerne les options de linterface utilisateur :

Sur cet onglet on rglera des options comme le support des ActiveX, des sockets, de laide contextuelle.

Dernire Mise jour le 04/11/2006 16:55:00

-6-

Examinons maintenant le code gnr :// InitCommonControlsEx() est requis sur Windows XP si le manifeste de l'application // spcifie l'utilisation de ComCtl32.dll version 6 ou ultrieure pour activer les // styles visuels. Dans le cas contraire, la cration de fentres chouera. INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // dfinir pour inclure toutes les