Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1945 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [MFC]Thread

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MFC]Thread

n°1011454
dreamkille​r
Posté le 13-03-2005 à 19:31:39  profilanswer
 

bon voila mon probleme je suis en train de faire une horloge en c++ pour un projet et elle utilise un thread.
 
Quand je compile le prog j'ai cette erreur: error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
 
 
QQ peut t'il m'aider a resoudre se probleme voici le code

Code :
  1. UINT CHorlogeDlg::m_ThreadHorloge(LPVOID pParam)
  2. {
  3. bool bTopSeconde=false;
  4. CTime horloge = CTime::GetCurrentTime();
  5. //CTime horloge;
  6. int nHeure;
  7. int nMin;
  8. int nSec;
  9. CString strHeure;
  10. CString strMin;
  11. CString strSec;
  12. do
  13. {
  14.  Sleep(1000);
  15.  nHeure=horloge.GetHour();
  16.  nMin=horloge.GetMinute();
  17.  nSec=horloge.GetSecond();
  18.  CStatic * heure=(CStatic*)GetDlgItem(IDC_TEXT_HEURE);
  19.  CStatic * min=(CStatic*)GetDlgItem(IDC_TEXT_MIN);
  20.  CStatic * sec=(CStatic*)GetDlgItem(IDC_TEXT_SEC);
  21.  strHeure.Format("%d",nHeure);
  22.  strMin.Format("%d",nMin);
  23.  strSec.Format("%d",nSec);
  24.  if(!bTopSeconde)
  25.  {
  26.   heure->SetWindowText(strHeure);
  27.   min->SetWindowText(strMin);
  28.   sec->SetWindowText(strSec);
  29.   bTopSeconde=true;
  30.  }
  31.  else
  32.   bTopSeconde=false;
  33.  Invalidate();
  34. }while(m_bFin!=true);
  35. return 1;
  36. }
  37. void CHorlogeDlg::OnOK()
  38. {
  39. AfxBeginThread(m_ThreadHorloge, 0,THREAD_PRIORITY_LOWEST);
  40. CDialog::OnOK();
  41. }

mood
Publicité
Posté le 13-03-2005 à 19:31:39  profilanswer
 

n°1011468
skeye
Posté le 13-03-2005 à 20:02:18  profilanswer
 

T'as l'erreur, t'as la fonction, il te faut quoi de plus? Il y a un pb avec un de tes paramètres...
http://search.microsoft.com/search [...] &s=1&swc=0


---------------
Can't buy what I want because it's free -
n°1011470
dreamkille​r
Posté le 13-03-2005 à 20:06:01  profilanswer
 

oui j'veux bien mais j'vois pas la solution meme avec la msdn excuse moi mais c'est mon premier thread :??:

n°1011471
skeye
Posté le 13-03-2005 à 20:07:21  profilanswer
 

L'erreur te dit (en gros) qu'aucune fonction appelée AfxBeginThread ne prend de premier paramètre de ce type...donc à priori revois le prototype de ta fonction...


---------------
Can't buy what I want because it's free -
n°1011475
skeye
Posté le 13-03-2005 à 20:12:14  profilanswer
 

à vue de nez, en lisant le second lien de la page que je t'ai filé, je dirais que ta fonction ne doit pas être une fonction membre d'une classe...

Citation :


pfnThreadProc
    Points to the controlling function for the worker thread. Cannot be NULL. This function must be declared as follows:
 
UINT MyControllingFunction( LPVOID pParam );
 
 


---------------
Can't buy what I want because it's free -
n°1011482
KangOl
Profil : pointeur
Posté le 13-03-2005 à 20:27:50  profilanswer
 

skeye a écrit :

à vue de nez, en lisant le second lien de la page que je t'ai filé, je dirais que ta fonction ne doit pas être une fonction membre d'une classe...

Citation :


pfnThreadProc
    Points to the controlling function for the worker thread. Cannot be NULL. This function must be declared as follows:
 
UINT MyControllingFunction( LPVOID pParam );
 
 



effectivement :jap:


---------------
Nos estans firs di nosse pitite patreye...
n°1011492
dreamkille​r
Posté le 13-03-2005 à 20:49:51  profilanswer
 

donc si j'ai bien compris en la mettant en dehors de toute classe ca doit marché

n°1011495
dreamkille​r
Posté le 13-03-2005 à 20:54:14  profilanswer
 

nan j'dis des conneries c'est pas possibles sinon mes getdlgitem sont hs
 
CA M'ENERVE :cry:

n°1011548
dreamkille​r
Posté le 13-03-2005 à 21:23:55  profilanswer
 

c'est pas sympa de laisser les gens dans la merde j'ai passer l'apres midi sur ca et si je pose la question sur ce forom c'est que je trouve pas la solution please help me :(

n°1011579
skeye
Posté le 13-03-2005 à 22:05:19  profilanswer
 

dreamkiller a écrit :

nan j'dis des conneries c'est pas possibles sinon mes getdlgitem sont hs
 
CA M'ENERVE :cry:


 
Il faut passer les bons paramètres, c'est tout!:o
Tu passes this comme paramètre, et dans ta fonction de thread tu castes ton LPVOID en CHorlogeDlg* et c'est gagné...:o


Message édité par skeye le 13-03-2005 à 22:09:00

---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 13-03-2005 à 22:05:19  profilanswer
 

n°1011580
skeye
Posté le 13-03-2005 à 22:07:34  profilanswer
 

Toujours en suivant les liens dans la doc citée plus haut, on trouve cet exemple, d'ailleurs :

Code :
  1. UINT MyThreadProc( LPVOID pParam )
  2. {
  3.     CMyObject* pObject = (CMyObject*)pParam;
  4.     if (pObject == NULL ||
  5.         !pObject->IsKindOf(RUNTIME_CLASS(CMyObject)))
  6.     return 1;   // if pObject is not valid
  7.     // do something with 'pObject'
  8.     return 0;   // thread completed successfully
  9. }
  10. // inside a different function in the program
  11. .
  12. .
  13. .
  14. pNewObject = new CMyObject;
  15. AfxBeginThread(MyThreadProc, pNewObject);


 
Je t'avais donné toutes les pistes pour te démerder tout seul, si tu fais pas l'effort de les suivre on est pas là pour te pondre des solutions toutes cuites, hein...


---------------
Can't buy what I want because it's free -
n°1016986
dreamkille​r
Posté le 18-03-2005 à 10:33:07  profilanswer
 

ca y est ca marche j'ai repris le prob le lendemin apres une bonne nuit de sommeil j me suis replongé dans la msdn et j'a itrouver ce qui allais pas  
 
 
je met le code si des fois ca interesse qq
 
 

Code :
  1. UINT ThreadHorloge(LPVOID pParam)
  2. {
  3. CHorlogeDlg* pObject = (CHorlogeDlg*)pParam;
  4. bool bTopSeconde=false;
  5. CTime horloge /*= CTime::GetCurrentTime()*/;
  6. int nHeure;
  7. int nMin;
  8. int nSec;
  9. CString strHeure;
  10. CString strMin;
  11. CString strSec;
  12. while(pObject->m_bFin!=true)
  13. {
  14.  horloge = CTime::GetCurrentTime();
  15.  nHeure=horloge.GetHour();
  16.  nMin=horloge.GetMinute();
  17.  nSec=horloge.GetSecond();
  18.  CStatic * heure=(CStatic *)pObject->GetDlgItem(IDC_TEXT_HEURE);
  19.  CStatic * min=(CStatic *)pObject->GetDlgItem(IDC_TEXT_MIN);
  20.  CStatic * sec=(CStatic *)pObject->GetDlgItem(IDC_TEXT_SEC);
  21.  strHeure.Format("%d",nHeure);
  22.  strMin.Format("%d",nMin);
  23.  strSec.Format("%d",nSec);
  24.  heure->SetWindowText(strHeure);
  25.  min->SetWindowText(strMin);
  26.  sec->SetWindowText(strSec);
  27.  pObject->Invalidate();
  28.  Sleep(1000);
  29. }
  30. return 1;


 
appel du thread

Code :
  1. m_pTHreadHorloge=AfxBeginThread(ThreadHorloge,this/*,pNewObject*/,THREAD_PRIORITY_LOWEST);
  2. m_pTHreadHorloge->m_bAutoDelete=false;

n°1017295
Joel F
Real men use unique_ptr
Posté le 18-03-2005 à 13:36:42  profilanswer
 

Code :
  1. CMyObject* pObject = reinterpret_cast<CMyObject*>(pParam);


 
[:aloy] non ?

n°1024628
dreamkille​r
Posté le 25-03-2005 à 11:48:26  profilanswer
 

Joel F a écrit :

Code :
  1. CMyObject* pObject = reinterpret_cast<CMyObject*>(pParam);


 
[:aloy] non ?


 
ben j'en sais rien ma solution marche elle n'est peut etre pas parfaite mais ca marche donc voila :D

n°1024881
dreamkille​r
Posté le 25-03-2005 à 15:31:28  profilanswer
 

Autre probleme est t il possible de recuperer en dehors du thread les variables nHeure , nMin nSec
 
Si oui comment la j'ai aucune idée :??:

n°1025220
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 25-03-2005 à 19:02:53  profilanswer
 

bon j'explique : ça ne marche pas, car une fonction membre de classe possède en 1er paramètre implicite le pointeur this. donc forcément, ça ne colle pas avec la signature.
la solution : faire de cette fonction une fonction static et point barre !


---------------
J'ai un string dans l'array (Paris Hilton)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [MFC]Thread

 

Sujets relatifs
[MFC/C++] Problème d'initialisation de CListCtrlReturn avec un thread
boite de dialogue lancée par un thread bug!avicap sans une GUI MFC
[C Ansi] Thread POSIX problème de synchronisationcréation d'un Thread sous MFC
[MFC] Terminer un thread à la barbare mais proprement quand même ???[C++] Threading --> PB de creation de thread (MFC)
[C++ ] comment créer et executer des thread en MFC[Visual C++] Thread dans MFC
Plus de sujets relatifs à : [MFC]Thread


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR