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 :

[MFC] Probl�me avec les Threads (et les progressBar)


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 84
    Par d�faut [MFC] Probl�me avec les Threads (et les progressBar)
    Bonjour � tous !

    Je developpe actuellement un controle activex qui contient une boite de dialogue contenant un bouton Cancel et une progressBar, cette boite dialogue permet de suivre le cours d'un t�l�chargement.

    Mon probl�me vient du fait que je cr�e ma boite de dialogue en faisant :


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void CTransfer::ShowDialog()
    {
    	myProgrBar = new CProgressBar();
    	if(myProgrBar != NULL)
       {
    	   BOOL ret = myProgrBar ->Create(IDD_PROGRESSBAR);
          if(!ret) 
             AfxMessageBox("Error creating Dialog");
          myProgrBar->ShowWindow(SW_SHOW);
       }
    }
    Dans mon object CProgressBar, j'ai deux objets un CProgressCtrl et un Button. Voici son constructeur :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    BOOL  CProgressBar::OnInitDialog() 
    {
    	m_buttonCancel = new CButton();
    	m_buttonCancel->Create("Cancel",WS_VISIBLE|BS_PUSHBUTTON, CRect(149,62,249,90), this, 1);
    	m_progrCtrl = new CProgressCtrl();
    	m_progrCtrl->Create(WS_VISIBLE|PBS_SMOOTH, CRect(7,20,540,60),  this, 1);
    	m_progrCtrl->SetStep(8);
    	return TRUE;
    }
    Mon probl�me c'est que j'ai l'impression de ne pas avoir la main pour pouvoir appuyer sur le bouton Cancel, il y a m�me des fois o� le bouton n'apparait pas. Je pense qu'il faudrait faire l'�quivalent du "DoEvent" en VB pour que tout rentre dans l'ordre mais je ne sais pas si c possible avec VC++. Si vous avez des id�es pour r�soudre mon probl�me n'hesitez pas.

    Merci d'avance

  2. #2
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 84
    Par d�faut
    Ya t-il un equivalent du DoEvent en VB pour le C++, c'est � dire une m�thode qui va lire les evenements de la souris et du clavier ??

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 84
    Par d�faut
    J'essaye de resoudre mon probl�me avec des threads mais j'ai un probl�me de conversion assez bizarre puisque j'ai fait un c/c de msdn...
    Voici mon code :
    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
    #include <windows.h>
    #include <strsafe.h>
    #include "afxwin.h"
    void CProgressBar::stepIt()
    {   DWORD dwThreadId, dwThrdParam = 1; 
        HANDLE hThread; 
     
        hThread = CreateThread( 
            NULL,                        // attribut de securité par defaut
            0,                           // taille de la pile par defaut
            MonThread,                  // notre function
            &dwThrdParam,                // l'argument pour la fonction
            0,                           // flag de creation par defaut
            &dwThreadId);                // retourne l'id du thread	
    }
     
    DWORD WINAPI MonThread( LPVOID lpParam ) 
    { 
        MessageBox(0,"Nous avons passe comme parametre""thread","",MB_OK); 
        return 0; 
    }
    Lorsque je compile, j'obtiens l'erreur suivante :
    error C2664: 'CreateThread' : cannot convert parameter 3 from 'DWORD (LPVOID)' to 'LPTHREAD_START_ROUTINE'
    Quelqu'un a-t-il deja eu cette erreur ? Est ce quelle peut venir de mes includes ?
    Merci d'avance

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 84
    Par d�faut
    Personne n'a eu cette erreur alors ?
    Est ce que cette erreur peut venir du fait que je sois en ThreadingModel = 'Apartment' ???

  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
    salut,
    deja essaye de rajouter un UpdateWindow() apres ton showwindow.
    apres ton probleme doit venir du fait que les messages n'arrivent a ta dialogue ,notemment si tu as un traitement en boucle .
    il manquerait alors :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    MSG msg;
        // Handle dialog messages
        while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
          if(!IsDialogMessage(&msg))
          {
            TranslateMessage(&msg);
            DispatchMessage(&msg);  
          }
        }
    une petite pompe a message pour la dialogue au sein du traitement.

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 84
    Par d�faut
    Du fond du coeur merci Ca faisait 3 jours que je galerais avec les threads. Ouf !

    Encore une fois merci!

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

Discussions similaires

  1. Probl�mes avec les thread et les pointeurs
    Par raspac dans le forum POSIX
    R�ponses: 2
    Dernier message: 22/10/2006, 17h35
  2. R�ponses: 4
    Dernier message: 02/06/2005, 20h08
  3. [MFC] probl�me avec les insertions dans CComboBox
    Par Joeleclems dans le forum MFC
    R�ponses: 12
    Dernier message: 11/06/2004, 15h31

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