begin process at 2012 05 29 22:35:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Probleme de thread qui bug quand on bouge la souris


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme de thread qui bug quand on bouge la souris

mercredi 6 avril 2005 à 11:52:32 | Probleme de thread qui bug quand on bouge la souris

squellettor

Bonjour,
Je programme actuellement sous borland C++ v6 et j'ai un gros bug de thread.
Je fait un visualisateur d'image qui créé des thumbnails pour chaque image pour que ca aille plus vite. Je fait l'affichage page par page. Donc dès qu'il a fini de créé la premiere page d'image je lance un thread qui va me créé tout les autres thumbnails sur le disque.Le thread se lance, et si je bouge pas la souris il arrive a me crée tout les thumbnails correctement. Mais si je bouge la souris au bout d'un moment le thread bug et il prend toujous la meme image pour les thumbnails ! Je ne comprend pas le rapport entre l'execution de mon thread et l'interference que cela peut avoir avec ma souris . HELP !!

alors pour crée mon thread j'utilise la fonction :
CreateThread(NULL,NULL,ThreadProc,NULL,NULL,&ThreadId);

puis je met mon code : (ListeFichiers étant une TStringList déclarer en global)

DWORD WINAPI ThreadProc(LPVOID lpParam)
{
  AnsiString extension,NomFichier;
  Form1->Label5->Caption="Création des fichiers Thumbnails en cours..." ;
  TJPEGImage *jpg = new TJPEGImage();
  Graphics::TBitmap * Bitmap = new Graphics::TBitmap;
  float ratio_width;
  float ratio_height;


  for (int i=15; i<ListeFichiers->Count; i++)
 {
    Form1->ImageCacher->Canvas->Brush->Color = clWhite;
    Form1->ImageCacher->Canvas->FillRect(Form1->ImageCacher->Canvas->ClipRect);


  extension=ExtractFileExt(ListeFichiers->Strings[i]);
  NomFichier=ExtractFileName(ListeFichiers->Strings[i]);

    Form1->Label6->Caption=NomFichier;

  if (extension==".jpg"|| extension==".jpeg" || extension==".JPG"|| extension==".JPEG")
  {

   jpg->LoadFromFile(ListeFichiers->Strings[i]);
     
   Bitmap->Assign(jpg);

   if(Bitmap->Width>Form1->ImageCacher->Width || Bitmap->Height>Form1->ImageCacher->Height)
   {
    ratio_width= Bitmap->Width/((float)Form1->ImageCacher->Width);
    ratio_height= Bitmap->Height/((float)Form1->ImageCacher->Height);
    if (ratio_width<ratio_height)
     Form1->ImageCacher->Canvas->StretchDraw(Rect(0,0,Bitmap->Width/ratio_height,Bitmap->Height/ratio_height),Bitmap);
    else
     Form1->ImageCacher->Canvas->StretchDraw(Rect(0,0,Bitmap->Width/ratio_width,Bitmap->Height/ratio_width),Bitmap);

    Form1->ImageCacher->Picture->SaveToFile( "D:\\thumb\\thumb_JPG_"+NomFichier+".bmp") ;
   }
   else
   {
    Form1->ImageCacher->Canvas->StretchDraw(Rect(0,0,Bitmap->Width,Bitmap->Height),Bitmap);
        Form1->ImageCacher->Picture->SaveToFile( "D:\\thumb\\thumb_JPG_"+NomFichier+".bmp") ;
   }

      Bitmap->FreeImage();
      jpg->Empty;

  }

  if(extension == ".bmp"|| extension==".BMP")
  {


   Bitmap->LoadFromFile(ListeFichiers->Strings[i]);

   if(Bitmap->Width>Form1->ImageCacher->Width || Bitmap->Height>Form1->ImageCacher->Height)
   {
    ratio_width= Bitmap->Width/((float)Form1->ImageCacher->Width);
    ratio_height= Bitmap->Height/((float)Form1->ImageCacher->Height);

    if (ratio_width<ratio_height)
     Form1->ImageCacher->Canvas->StretchDraw(Rect(0,0,Bitmap->Width/ratio_height,Bitmap->Height/ratio_height),Bitmap);
    else
     Form1->ImageCacher->Canvas->StretchDraw(Rect(0,0,Bitmap->Width/ratio_width,Bitmap->Height/ratio_width),Bitmap);

    Form1->ImageCacher->Picture->SaveToFile( "D:\\thumb\\thumb_"+NomFichier) ;
   }
   else
   {
    Form1->ImageCacher->Canvas->StretchDraw(Rect(0,0,Bitmap->Width,Bitmap->Height),Bitmap);
        Form1->ImageCacher->Picture->SaveToFile( "D:\\thumb\\thumb_"+NomFichier) ;
   }

      Bitmap->FreeImage();
    }
  }
  Form1->Label5->Caption="Tout les thumbnails ont été créé";
  return 0;
}
 
Merci de votre aide.



Cette discussion est classée dans : width, height, form1, bitmap, imagecacher


Répondre à ce message

Sujets en rapport avec ce message

Pointeur récalcitrant [ par asmanur ] Bonjour, j'ai des prob avec des pointeurs regardez le codevoid LoadMap(int** Data,char* path){FILE* f=fopen(path,"r+");int Width=getc(f)-50;//Pourquoi Allocation Dynampique trois dimensions [ par gilimcce ] Bonsoir,J'alloue la mémoire d'un tableau contenant les pixels d'une image. Si je déclare classiquement mon tableau ( ex: image[512][1024][3] ) tout s Allocation dynamique 3 dimensions [ par gilimcce ] Bonsoir,J'alloue la mémoire d'un tableau contenant les pixels d'une image. Si je déclare classiquement mon tableau ( ex: image[512][1024][3] ) tout se [ActiveX] commnet récupérer les attributs Height / Width ? [ par teamkiller ] Je programme en VC++ 2003 et je souhaite à l'intérieur de mon programme récupérer les attributs height / width de la balise object . J'ai réussi à ré Probleme urgent [ par pozor16 ] Une image est composée d'un ensemble de points (des pixels) dont on peut fixer la couleur en donnant la valeur des 4 composantes qui composent une cou GTK+/VC++ [ par niwniwa ] bonjour je veux travailler avec GTK+, et pour commencer j'ai fait un petit programme juste pour faire la lecture d'une image et l'affichage de ses d [XLib] Gestion de l'event ResizeRequest [ par NaeiKinDus ] Bonjour tout le monde ! Je suis en train de plancher sur une petite application s'apparentant a un Gimp, mais un leger ennuie se pose a moi concernant OpenGL [ par bouba ] Bonjour, je souhaite dessiner avec OpenGL et afficher le résultat dans une image mais je ne veux pas du tout l'afficher dans une fenêtre, j'ai donc cr Pb d'affichage, multiviewport [ par dark_naruto25 ] Bonjour tout le monde,Je suis en train de programmer (en groupe) un jeu d'échec, et je me retrouve avec un problème à l'affichage de mes menus.Pour l' Utilisation CxImage [ par incognito76 ] Bonjour, j'essaie depuis deux semaines en vain de stocker une image Bitmap (8 bit grayscale) dans un tableau où les élements correspondraient  aux int


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales