Bonsoir a tous,

J'ai créé un petit programme qui déplace automatiquement une liste de fichiers d'un repertoire vers un autre. Pour savoir ou on en est dans la progression, j'y ai ajouté une petite progressbar que j'incremente a chaque nouveau fichier traité. Tout fonctionne parfaitement tant que je ne bouge pas la souris et que je ne clic pas. Mais dès que je clic ailleurs, la barre de progression ne bouge plus et l'intitulé de la fenetre contient: "ne repond pas".

voici le code de la methode incriminée:
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
33
34
35
36
37
	pnlImg->Visible = true;
	pbCopyFile->Position = 0;
	mainForm->Refresh();
	int pas = 100 / getNbSelected(lstFilmsRecup);
	for(int i=lstFilmsRecup->Items->Count-1; i>=0; i--)
	{
		if( lstFilmsRecup->Checked[i] )
		{
			pbCopyFile->Position += pas;
			AnsiString file = lstFilmsRecup->Items->Strings[i].SubString(lstFilmsRecup->Items->Strings[i].LastDelimiter("\\")+1,lstFilmsRecup->Items->Strings[i].Length());
 
			if( !CopyFile(lstFilmsRecup->Items->Strings[i].c_str(),(edtBrowseDest->Text+"\\"+file).c_str(),true))
				MessageDlg("Problème à la copie du fichier: "+lstFilmsRecup->Items->Strings[i], mtWarning, TMsgDlgButtons() << mbOK, 0);
			else
			{
				int j = findFile((AnsiString) lstFilmsRecup->Items->Strings[i]);
				if(j!=-1)
				{
					_vLstRecup[j].users += ";"+edtPseudo->Text;
					lstFilmsRecup->Items->Delete(i);
				}
				else
				{
					Fichier f;
					f.fichier = lstFilmsRecup->Items->Strings[i];
					f.users = edtPseudo->Text;
					_vLstRecup.push_back(f);
					lstFilmsRecup->Items->Delete(i);
				}
			}
		}
		Application->ProcessMessages();
	}
	pnlImg->Visible = false;
	saveListeFichiers();
 
	videOngletSuppr();