Bonjour,
J'ai un probl�me lorsque j'essaie d'afficher des donn�es provenant d'une thread dans un Form. J'ai con�u ce petit prog. afin d'essayer de comprendre ce qui ce passe, car j'ai ce probl�me dans un plus gros programme. Or j'essaie d'afficher des donn�es � partir d'une thread et de la form. J'ai essay� plusieur chose les lock, semaphore etc... , mais le probl�me est que je ne peux pas arr�ter mon prog principal. de plus, les locks, ne fonctionnait pas bien.
Avec ce code j'ai deux probl�mes, le premier est un message d'erreur qui indique "Le canevas ne permet pas de dessiner." et le deuxi�me probl�me que je rencontre est que dans le coin sup�rieur de mon �cran, pas de ma form, de mon �cran, il y a du data qui s'affiche la 8O
En passant j'utilise la version 5 et 2006 de bcb, et dans les deux versions j'ai le m�me probl�mes.
Voici le code de la thread:
Et voici le code du programme principale :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" #pragma package(smart_init) //--------------------------------------------------------------------------- __fastcall test::test(bool CreateSuspended) : TThread(CreateSuspended){} //--------------------------------------------------------------------------- void __fastcall test::Execute() { unsigned char i = 255; while (1){ Sleep(50); Form1->Affichage(i--); } }
Merci d'avanceCode:
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
33
34
35
36
37
38
39
40
41
42
43
44 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; test *threadtest; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {} //--------------------------------------------------------------------------- // l'interval du timer est de 50 Ms void __fastcall TForm1::Timer1Timer(TObject *Sender) { static unsigned char i = 0; Label1->Caption = i++; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormShow(TObject *Sender) { threadtest = new test(false); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { threadtest->Suspend(); delete threadtest; } //--------------------------------------------------------------------------- void TForm1::Affichage(int i) { Label2->Caption = i; }