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] dialog & thread & progressbar


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 21
    Par d�faut [MFC] dialog & thread & progressbar
    Bonjour,
    j'ai un ptit souci. je suis ds un thread et j aimerai pvoir
    faire augmenter le compteur de ma progress situ� ds une dialog
    qui n'est pas la dialog main. Comment puis je faire ?
    avec la dialog main je faisais ca:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    extern CWordDoxApp theApp;
    CProgressCtrl *m_progress = (CProgressCtrl *)theApp.m_pMainWnd->GetDlgItem(IDC_PROGRESS1);
    m_progress->SetRange(0,i+8);
    m_progress->SetPos(1);
    mais avec une autre que faire ?
    amicalement,
    Tigris

  2. #2
    Membre exp�riment�
    Avatar de Nicolas Bauland
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    119
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 119
    Par d�faut
    C'est quel genre de thread ? Si c'est un thread de travail, lors du lancement du thread, tu peux passer un parametre de ton choix (LPVOID), tu peux faire passer un pointeur vers la fenetre et le tour est joue.

  3. #3
    Membre confirm� Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Par d�faut
    J'essaye de faire la m�me chose : dialog + thread + progress bar.

    1�re Question
    tu peux passer un parametre de ton choix (LPVOID)
    Je passe d�ja une instance en parametre, et il faudrait que je passe un deuxi�me param�tre pour faire le lien avec la fen�tre de dialogue.
    Est-ce qu'il y a un moyen pour passer 2 param�tres :

    2�me Question
    A supposer qu'on puisse passer 2 param�tres, mon code ressemblerait � quelque chose comme :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    UINT threadStart(LPVOID pParam1,LPVOID pParam2)
    {
      ....
      static_cast<CProject*>(pParam1)->start();
      ....  
      ::PostMessage((HWND)pParam2,WM_UPDATE_PROGRESSBAR,valeur,0) ;
      ....
        return 0;
    }
    La fonction start() est :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (int i=0; i < m_commands.GetSize() ; i++ )
    {
      if(m_commands.GetAt(i)->getSelected())
      {
        m_commands.GetAt(i)->execute();
      }
     
       // INCREMENTER LA PROGRESSBAR ICI
    }
    Si je veux que la progressbar soit incr�ment�e, il faudrait pouvoir mettre � jour la varible valeur du thread, et en plus envoy� le message (:ostMessage((HWND)pParam2,WM_UPDATE_PROGRESSBAR,valeur,0) ;.

    Est-ce que je peux fixer la valeur de valeur et commander l'envoie d'un message depuis la fonction start :

    Merci

  4. #4
    Membre exp�riment� Avatar de BertrandA
    Inscrit en
    Ao�t 2003
    Messages
    170
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2003
    Messages : 170
    Par d�faut
    Est-ce qu'il y a un moyen pour passer 2 param�tres ?
    Passer l'adresse d'une structure, d'un objet, d'un machin...
    Est-ce que je peux fixer la valeur de valeur et commander l'envoie d'un message depuis la fonction start ?
    Ben oui. Suffit que start connaisse le handle de la fen�tre.

  5. #5
    Membre confirm� Avatar de loupdeau
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    125
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 125
    Par d�faut
    Concernant le passage de plusieurs param�tre j'ai fait 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
    struct SParameters{
     HWND window;
     CProject* project;
    };
     
    (...)
     
    SParameters arg;
     
    (...)
     
    arg.project=pMyProjectDoc->getProject();
    arg.window=GetSafeHwnd();
    AfxBeginThread(threadStart,&arg,THREAD_PRIORITY_NORMAL);
     
    (...)
     
    UINT threadStart(LPVOID pParam)
    {
      int valeur=0;
      static_cast<SParameters*>(pParam)->project->start();
      ::PostMessage(static_cast<SParameters*>(pParam)->window,WM_UPDATE_PROGRESSBAR,valeur,0) ;
       return 0;
    }
    PROBLEME:Si je lance l'application en mode debug ca marche.
    Si je fais simplement executer MonAppli.exe, je me fais insulter de tout les c�t�s � l'ex�cution, bug m�moire etc...

    Help !

Discussions similaires

  1. [MFC] fonction Create d'une ProgressBar
    Par lastcheper dans le forum MFC
    R�ponses: 10
    Dernier message: 20/05/2005, 15h20
  2. [MFC] Dialog de s�lection de destination
    Par toune dans le forum MFC
    R�ponses: 3
    Dernier message: 22/03/2005, 15h46
  3. R�ponses: 3
    Dernier message: 24/08/2004, 11h49
  4. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    R�ponses: 5
    Dernier message: 23/04/2004, 22h51

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