IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

View, form, doc, frames, etc.


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 38
    Par défaut View, form, doc, frames, etc.
    Salut a tous,

    Je commence tout juste avec les MFC et je galere un peu (beaucoup meme).\

    J'ai regarde plusieurs tutorials mais j'ai toujours des gros problemes a bien integrer la difference entre les views, les forms, les documents, les frames, ...
    J'ai bien compris ce que sont la maimframe, les frames child (eh oui, je bosse sur une MDI en plus), les view, mais je ne vois pas ce qu'on met dans chaque (pourquoi on met ca la plutot qu'ailleurs), et je ne comprends pas a quoi servent les documents (templates ou pas). Je ne comprends donc par exemple pas du tout la difference entre CEdit et CEditView.

    Apres ces lamentations, la question :
    connaitriez vous un tutorial bien complet sur le sujet ou serait-il possible d'eclairer ma lanterne dans ce topic ?

    Merci beaucoup.

    Charles

    PS. Dsl pour les accents, je suis sur un qwerty

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    Je n'ai pas de tutoriels bien foutu sur le sujet, mais je peux répondre partiellement à la question concernant l'architecture document/vue.

    Cette architecture permet de séparer la partie [saisie utilisateur - vue] de la partie calculs, fonctionnalités, et ainsi éviter de tout réécrire le code le jour où on veut changer le type de saisie ou vue, et de plus de pouvoir afficher de manière différentes, dans des vues séparées, un résultat sous plusieurs formats.

    Prenons un exemple simple de la "calculette"
    Soit une fonction permettant de sommer deux termes, elle pourrait se présenter sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int MaclassDocument::functionsomme (int a, int b) {return a+b;}
    Cette fonction réalise un calcul, elle est donc dans le document
    Là rien de bien compliqué.
    Maintenant, interressons nous à la saisie et à l'affichage
    Supposons 2 Editbox représentant a et b plus un bouton lancer calcul qui est associé à un évenement lançant la fonction calculersommeetafficher.
    cette fonction se situera dans une vue, elle appelera via la passerelle GetDocument() la fonction de la classe document réalisant la somme et effectuera toutes les opérations liées à l'affichage du résultat, qui pourra se présenter sous la forme d'un AfxMessageBox, d'un simple texte ou d'un graphique, voir les trois ensemble.

    Voila, en espérant avoir pu d'éclaircir un peu sur le sujet.

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    tuto MFC : http://farscape.developpez.com/tutor...arrer-mfc-vc6/
    en attendant que je le refasse pour vc2008...

  4. #4
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 38
    Par défaut
    Merci beaucoup, c4est effectivement plus clair.
    Mais bon, une question n'allant jamais seule :

    Voici deux parties de codes du prog que j'etudie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    BOOL CBlablaApp::InitInstance()
    {
    ...
    // Add the doc templates
    //**********************
      CDocManager::bStaticInit = FALSE;
      pBlablaDocTemplate = new CMultiDocTemplate(IDR_OGLVIEW,
          RUNTIME_CLASS(CTotoDoc),
          RUNTIME_CLASS(CTotoFrame),
          RUNTIME_CLASS(CTotoView));
      this->AddDocTemplate(pBlablaDocTemplate);
    ...
    }
    et a un autre endroit, on divise la frame actuelle avec des splitters et on initialise lesdits splitters dont le premier de la facon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    BOOL CTotoFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
    {
    ...
      m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CTotoView), CSize(500, 440), pContext))
    ...
    }
    Ma question : est ce que on a cree deux instances differentes de CTotoView (la rouge qui correspond a la vue de toute la fenetre et la verte qui n'est qu'une partie de cette fenetre delimitee par le splitter, auquel cas bizarre que ce soit la meme classe utilisee pour les deux) ou bien est-ce une seule et meme instance mais dans ce cas pourquoi ?

    Merci !

  5. #5
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    : "Splitter MFC"

    L'implémentation des splitters sur MFC est un peu particulier, mais plein de choses (exemples, ...) sont disponibles sur le net, mais souvent en anglais.

    Un exemple assez bien foutu provient de MSDN, recherche le projet "viewex"
    Il y a une partie concernant les splitters

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 38
    Par défaut
    Oups autant pour moi, j'avais visiblement pas assez cherche. Je pense avoir trouve la reponse ici : http://cpp.developpez.com/faq/vc/?pa...tter#SlpitView

    "La première ligne CreateStatic initialise le splitter avec une ligne et deux colonnes ce qui correspond ici à deux fenêtres séparées verticalement par le splitter.
    Les lignes suivantes correspondent aux classes fenêtres associées au splitter.
    Dans la fonction CreateView on spécifie la ligne et colonne de la fenêtre sa surface d'affichage initiale et bien sur le runtime de la classe fenêtre.
    C'est tout.

    Note : Une des deux classes doit être celle qui est déclarée dans la fonction InitInstance de la classe d'application "


    Merci.

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/10/2008, 14h10
  2. GUI, Singleton, fermeture de frame, etc..
    Par Sylver--- dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 14/06/2007, 16h57
  3. window.opener.frames etc, etc
    Par sylvebarbe78 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/11/2006, 09h17
  4. Réponses: 4
    Dernier message: 19/10/2006, 11h51
  5. Form action Frame
    Par phil22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 08/08/2006, 12h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo