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 :

[Visual C++][MFC]Affichage dans un Edit Control a partir d'une function hors class


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    58
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 58
    Par d�faut [Visual C++][MFC]Affichage dans un Edit Control a partir d'une function hors class
    Bonjour a tous,

    Voila j'ai une variable CEdit m_Edit1 associ�e a un Edit Control. Je veux faire un truc du style :

    void Display(void)
    {
    m_Edit.SetWindowText("he");
    UpdateData(FALSE);
    }
    Mais je ne peux pas car ma fonction ne connait pas m_Edit. Il ne connait pas non plus UpdateData(FALSE).

    Comment faire ????

    Merci

  2. #2
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 295
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 295
    Billets dans le blog
    2
    Par d�faut
    Bonjour,

    comment as-tu cr�� ton CEdit?
    Peux-tu nous donner le code du .h de la classe qui contient ce CEdit?

  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,
    pour utiliser des donn�es membres ou methodes d'un objet hors classe il faut disposer d'un pointeur sur l'objet.
    genre:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    void Display(void)
    {
    pMyDlg->m_Edit.SetWindowText("he");
    pMyDlg->UpdateData(FALSE);
    }
    mais bon ce genre de chose devrait etre reserv� a des threads ou des fonctions statiques a la classe...
    en dehors de ces cas, ton design n'est pas bon...

  4. #4
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    58
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 58
    Par d�faut
    j'ai simplifi� le probleme mais en effet c'est pour une thread.
    Je test et te donne la r�ponse...
    merci

  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
    alors si c'est pour un thread consulte la faq....
    http://c.developpez.com/faq/vc/?page...d#WorkerThread

  6. #6
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    58
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 58
    Par d�faut
    Je travail sous VS 2003.
    j'ai g�n�r� mon m_Edit a partir de mon "add member variable wizard" en cliquant sur mon control.
    Cela m'a donc g�n�r� dans mon xxxView.h :

    public:
    CEdit m_Edit;


    Et dans mon xxxView.cpp :

    DDX_Control(pDX, IDC_EDIT1, m_Edit);

    En cr�ant une variable global:

    static CEdit* Edit1;

    et en �crivant:

    Edit1->m_Edit.SetWindowText("he");
    Edit1->UpdateData(FALSE);


    Cela me g�nere l'erreur suivante :

    m_Edit is not a member of 'CEdit'
    SetWindowTextA must have a class/struct/union type


    Pourtant mon m_Edit est bien de type CEdit.
    La commande Edit1->UpdateData(FALSE); fontionne parcontre

  7. #7
    mat.M
    Invit�(e)
    Par d�faut
    Edit1->m_Edit.SetWindowText("he");
    Edit1->UpdateData(FALSE);
    AAAAaaaaarghh cela fait la �ni�me fois ! UpdateData apparemment personne ne pige comment fonctionne cette instruction .
    Farscape fait qque chose !

    Soit tu utilises SetWindowText
    soit tu affectes le controle avec nom_controle=valeur PLUS UpdateData
    UpdateData est utilis� pour mettre � jour des controles lors de l'affichage de fen�tres de type dialogue

    Edit1->m_Edit.SetWindowText("he");
    Pas la peine de passer par m_Edit !
    Il suffit de d�clarer Edit1->SetWindowText("he");

  8. #8
    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
    Citation Envoy� par mat.M
    AAAAaaaaarghh cela fait la �ni�me fois ! UpdateData apparemment personne ne pige comment fonctionne cette instruction .
    Farscape fait qque chose !
    ben dans la faq il y a pas mal de chose la dessus,http://c.developpez.com/faq/vc/?page...nge#UpdateData

    la le probleme c'est qu'il va falloir reviser ses bases sur le C++, regarder les classes des MFC .
    et eventuellement mon tuto (lien dans ma signature)..

  9. #9
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    58
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 58
    Par d�faut
    Il est vrais qu'on utilise pas toujours UpdateData(FALSE) de la bonne maniere.

    Enfin, le Edit1->SetWindowText("he"); que tu m'a conseill� ne marche pas
    Ca me fait un break dans la classe void CWnd::SetWindowText(LPCTSTR lpszString)

    a la ligne ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));

    Je vois pas trop comment ca pourrait marcher. . Le Edit1 �tant d�clar� en variable global de type CEdit* comment le programme peut savoir quand on fait Edit1->SetWindowText("ho"); que cela s'adresse a notre EditControl? Si il y en a plusieurs dans la fenetre?

  10. #10
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par d�faut
    je penses que tu n'as pas li� ta varaible global un ctrl existant !!
    par exemple on suppose que tu as ca :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    class MyDialog : public CDialog
    {
    ....
    CEdit  m_edit;
    .....
    };
    il faut qu'� un moment tu fasses ca :

    sinon cela correspond � avoir Edit1 qui n'est pas coh�rent !!!

    mais je ne comprends pas pq elle est globales :s

  11. #11
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    58
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 58
    Par d�faut
    En effet je n'avais pas li� ma variable avec le control existant. Ca marche


    Ma variable Edit1 doit etre vu par ma class pour faire: Edit1 = &m_edit;

    et aussi par ma fonction pour faire: Edit1->SetWindowText("he");

    Donc je me suis dit que le mettre en global c'�tait pas faux...
    Ya mieux donc je suppose...

    Merci

  12. #12
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par d�faut
    c'est la fonctiond e ton thread ?

    si c'est le cas tu lui passe quoi � cette fonction comme param�tre ?

  13. #13
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    58
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 58
    Par d�faut
    Dans mon cas c'est un peu compliqu� a expliquer .... En gros

    je crais une thread : threadIdentification = _beginthread(&NotifyReceiver,1,&threadID);

    Dans ce thread je rentre en comm avec un appareil de detection de tags(identit�) par un serveur :

    SOCKADDR_IN ServerAddr;
    ...
    wVersionRequested = MAKEWORD( 2, 2 );
    skt = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    ....
    client = accept(skt,(struct sockaddr FAR*) &ClientAddr, (int FAR *) &addrlen);
    if (client == INVALID_SOCKET )
    {
    err = WSAGetLastError();
    continue;
    }


    Et en gros mon prog reviens dans cette fonction toutes les seconde par exemple et continue apres cette derniere ligne. Alors je recupere l'identit� de mes tags.
    Je dois alors les traiter et afficher des infomations dans des controls de ma fenetre.
    Donc je prend les identit�s de mes tags, je les balances dans une autre fonction qui ne fait pas partie de ma class view, je traite les stags et les affiche.

    On passe part 2 fonctions qui ne connaissent pas mes objets graphiques. Je ne peux donc pas passe en parametres ces objets.

    voili voilo

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Affichage dans un Picture control ?
    Par faroukus dans le forum OpenCV
    R�ponses: 2
    Dernier message: 25/08/2008, 09h11
  2. Probl�me d'affichage dans un Edit Text
    Par Constant_Conbustion dans le forum Interfaces Graphiques
    R�ponses: 3
    Dernier message: 12/05/2008, 11h38
  3. [MFC] Affichage dans un textbox
    Par Copernic09 dans le forum MFC
    R�ponses: 7
    Dernier message: 07/12/2007, 13h22
  4. texte dans un edit control
    Par boboz2 dans le forum MFC
    R�ponses: 1
    Dernier message: 14/08/2007, 16h22
  5. [mfc] affichage dans une boite de dialog
    Par chronos dans le forum MFC
    R�ponses: 3
    Dernier message: 14/06/2004, 15h12

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