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 :

Ecrire du texte dans les fenetres filles (MDI)


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Architecte
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Par défaut Ecrire du texte dans les fenetres filles (MDI)
    Nous avons créer un projet avec en MDI (MFC), nous recevons des données, via le reseau et donc des sockets (AsyncSocket), et nous voudrions afficher ces données dans une des fenêtres filles. Mais nous ne savons pas par quel bout commencer.
    Comment faire pour mettre les fenetres en mode texte et ecrire dedans???? Help.....

    Trilomdor

  2. #2
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Par défaut
    En gros il faut :
    Recuperer un contexte de periphérique sur la fenêtre (Device Context) en utilisant la Fonction GetDC de la fenêtre.
    Utiliser la fonction TextOut du Device context
    Liberer le Context Device ReleaseDC
    Invalider le Rectangle où la eu lieu l'écriture. CWnd::InvalidateRect. ça provoque le refresh de la fenêtre

  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,
    autre solution possible utiliser la classe CEditView et rajouter au fur et a mesure le texte dedans.

  4. #4
    Membre averti
    Profil pro
    Architecte
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Par défaut
    --- Ok, l'explication parait clair et logique, MAIS dans quel fichier recupérer le Device context?? (...view.cpp, ...doc.cpp, ...App.cpp)
    De plus pour utiliser GetDC, ne faut il pas un pointeur sur CWnd, si oui lequel et de quelle fenetre ??

    --- Pour le CeditView, c'etait la piste sur laquelle on était parti, mais en fait, on faisait appelle à une fonction (Message) se trouvant dans le fichier ...view.cpp et au moment du transtypage, comme suit ((....view*)m_viewList.GetHead())->Message(str) , MFC nous indiquait qu'il ne connaissait pas 'm_viewList'. Nous ne savons meme pas où cette variable est déclarée ou dans quel header elle se trouve.


    Trilomdor

    PS : dsl , plus on fais de MFC plus on se perd, donc nos propos peuvent etre embrouillés. C'est pourquoi on a vraiment besoin d'aide.

  5. #5
    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
    re,
    c'est pas un pb des MFC c''est juste un pb de programmation C++
    le "chemin" du cast ne doit pas etre correcte.

  6. #6
    Membre averti
    Profil pro
    Architecte
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Par défaut
    A priori le chemin du cast serait bon, en effet nous faisons le meme dans ...doc.cpp, alors pourquoi dans le ...app.cpp, ca ne fonctonnerai pas. Il nous retourne l'erreur suivante, 'undeclared identifier' alors que nous utilisons les meme header sur les deux *.cpp.
    D'ou vient exactement cette variable, a quoi correspond-t-elle?

    Merci d'avance

    Trilomdor

  7. #7
    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
    sans un detail du code et de precisions il n'est pas possible de dire quoi ce soit ,
    en plus il faut preciser le type de projet SDI/MDI .


  8. #8
    Membre averti
    Profil pro
    Architecte
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Par défaut
    Dans un premier temps, il s'agit d'une application MDi comme l'indiquent le titre et le premier message. dans un deuxieme temps voila le plan de notre application :


    ...view.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void CxxxView::Message(LPCTSTR lpszMessage)
    {
    	CString strTemp = lpszMessage;
    	strTemp += _T("\r\n");
    	int len = GetWindowTextLength();
    	GetEditCtrl().SetSel(len,len);
    	GetEditCtrl().ReplaceSel(strTemp);
    }
     //declarer en public dans ...view.h
    ...doc.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void CxxxDoc::Message(LPCTSTR lpszMessage)
    {
    ((CxxxView*)m_viewList.GetHead())->Message(lpszMessage);
    }
     //declarer en public dans ...doc.h
    ...app.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void CxxxApp::Message(LPCTSTR lpszMessage)
    {
    ((CxxxView*)m_viewList.GetHead())->Message(lpszMessage);
    }
    //declarer en public dans ...app.h
    C'est dans le dernier fichier *.cpp que la variable m_viewList n'est pas reconnue alors que les header sont identiques à ceux de ...doc.cpp. ?

    Trilomdor
    [Farscape :Merci]

  9. #9
    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,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void CxxxDoc::Message(LPCTSTR lpszMessage)
    {
    ((CxxxView*)m_viewList.GetHead())->Message(lpszMessage);
    }
     //declarer en public dans ...doc.h
    elle sort d'ou la variable m_viewList ? ce code me parait hasardeux...
    pour recuperer la premiere view du document on peut faire
    j'ai decomposé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CxxxView* pView=NULL;
    POSITION pos = GetFirstViewPosition();
    if(pos) pView =(CxxxView*)GetNextView(pos);
    if(pView ) pView->Message(lpszMessage);
    [/code]

  10. #10
    Membre averti
    Profil pro
    Architecte
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Par défaut
    Merci pour ton aide, mais la derniere solution apportée ne fonctionnait pas non plus car "GetNextView" n'etait pas reconnu !

    Cependant nous sommes parvenu à nos fin grace à un simple "TextOut".

    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/08/2013, 08h57
  2. Ecrire du texte dans une texbox WPF, ouvert depuis une fenetre winform
    Par ThitoO dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 20/09/2010, 15h05
  3. Bug WxWidgets dans les fenetres MDI ?
    Par Muetdhiver dans le forum wxWidgets
    Réponses: 1
    Dernier message: 04/06/2007, 15h26
  4. [MFC]Ecrire du texte dans un rectangle
    Par zaz16 dans le forum MFC
    Réponses: 8
    Dernier message: 29/07/2003, 10h31
  5. comment ecrire du texte dans une window application
    Par gaut dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 16/07/2003, 10h23

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