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 :

Pb affichage Edit Control appelé depuis thread


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 126
    Par défaut Pb affichage Edit Control appelé depuis thread
    Bonjour à tous!

    Ca fait pas mal de temps que je tourne en rond sur ce problème alors j'ai besoin de votre aide...

    J'ai un thread qui permet de recevoir des valeurs et de les afficher dans des edit control en continu.
    Je pensais faire ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    long WINAPI thread14(long lParam)
    {
    	CString str;
     
    	while(1)
    	{
    	Card.getLeftPositionActual(NULL);
    	Card.getRightPositionActual(NULL);
     
     
    	CEdit* editFG=(CEdit*) GetDlgItem(NULL,IDC_EDIT3);
    	CEdit* editFD=(CEdit*) GetDlgItem(NULL,IDC_EDIT4);
    	CEdit* editHG=(CEdit*) GetDlgItem(NULL,IDC_EDIT7);
    	CEdit* editHD=(CEdit*) GetDlgItem(NULL,IDC_EDIT8);
     
    	str.Format(_T("%.1i"),Card.m_PosDInst);
    	editFG->SetWindowText(str);
     
    	str.Format(_T("%.1i"),Card.m_PosGInst);
    	editFD->SetWindowText(str);
     
    	str.Format(_T("%.1i"),Card.m_PreDInst);
    	editHD->SetWindowText(str);
     
    	str.Format(_T("%.1i"),Card.m_PreGInst);
    	editHD->SetWindowText(str);
     
     
     
    	}
    }
    Le projet compile mais à léxécution j'ai l'erreur suivante lorsque j'arrive à ce thread la:
    dans la fonction void CWND::SetWindowText(LPCTSTR lpzString) de winocc.cpp
    la ligne suivante est surlignée
    ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));

    je pense que ca vient du hwnd que je ne définis pas mais comment faire pour le définir correctement?

    merci d'avance

  2. #2
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Bonjour,

    Effectivement, ça doit venir du fait que tu ne passes pas le handle de ta fenêtre à la méthode GetDlgItem. As-tu un pointeur ou une variable sur la fenêtre concernée ?

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 126
    Par défaut
    non pas vraiment... je ne vois pas comment faire ?
    Avec la fonction GetSafeHwnd() je récupére le HWND de la fenetre?

  4. #4
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Ça, c'est pour avoir le handle. Mais avant d'avoir le handle, il faut avoir la fenêtre, sous forme de pointeur ou de variable. Où est-elle créée, cette fenêtre ?

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 126
    Par défaut
    euhhh j'ai utilisé les toolbox je ne l'ai pas créé manuellement mais par contre je l'appelle à partir de la fenêtre précédente de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    InstantResult *pDlg;
        pDlg = new InstantResult();
        pDlg->Create(InstantResult ::IDD,AfxGetMainWnd());
        pDlg->ShowWindow(SW_SHOW);
    le constructeur de cette fenêtre est alors le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    InstantResult::InstantResult(CWnd* pParent /*=NULL*/)
    	: CDialog(InstantResult::IDD, pParent)
    {
    }

  6. #6
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Et ce pointeur pDlg, tu le connais à l'endroit où tu fais tes GetDlgItem ?

Discussions similaires

  1. Réponses: 10
    Dernier message: 06/12/2011, 13h56
  2. Réponses: 12
    Dernier message: 01/06/2006, 15h32
  3. [VB.NET] Probleme d'affichage de controle
    Par mic56 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/06/2004, 15h03
  4. affichage de controles sur un splash screen
    Par shrek dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/11/2003, 19h59
  5. [CR][VB] Affichage d'un etat depuis VB
    Par Dayagnewende dans le forum SDK
    Réponses: 3
    Dernier message: 28/07/2003, 12h10

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