#1 Le 13/04/2006, à 17:44
- aznur
probleme de rafraichisement d'une fenetre gtk glade anjuta
voila j'ai commencer un petit projet mettant la classe "pthread" en action
je develope sou anjuta pour l'interface graphique j'utilise glade
mon probleme et le suivant je n'arrive pas a forcer la fenetre ou un composant comme un label a se redesinner
le principe de mon programme et le suivant j'appuie sur un bouton l'evenement crée entre autre chose un thread et une fois se thread créé je lui fai changer les valeur du label de 0 a 30
j'ai utiliser la fonction Gtk::queue_draw()
celle si devant d'aprés ma traduction forcé le label ou la fenetre à se redesinner
mon afichage se met pourtant a jour je m'explique :
quand mon pointeur souris passe sur un element de la fenetre exemple au dessus d'un bouton ou tou autre element mon afichage se met a jour
comment puis je forcer l'affichage de ma fenetre
je m'y prend peut etre mal etan donner que mon code ne resemble jamais o declaration que je vois ds les exemple pour creer une fenetre par exemple :
window1.h :
#ifndef _WINDOW1_HH
# include "window1_glade.hh"
# define _WINDOW1_HH
#include <unistd.h> // pour sleep
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <gtk/gtk.h>
#include <sstream>
void* mafonction(void* arg); //fonction utile o Thread
class window1 : public window1_glade
{ private:
pthread_t thread1;
void *ret;
virtual void on_button1_clicked();
public :
window1();
};
#endif
window1.cc
#include "config.h"
#include "window1.hh"
void* mafonction(void * arg){
window1 *objWin ; //declaration d'un nouvel objet
objWin =(window1*)arg ; //on pointe la zone memoire de la fenetre this
std::ostringstream oss; //creation d'une flux de caractere
std::string result ; //creation d'une chaine de caractere
for (int i=0 ;i<31;i++){//boucle pour aficher 30 activité du thread
//------------------------------------------------------------------------------
// écrire un nombre dans le flux
oss.str("");
oss << i;
// récupérer une chaîne de caractères
result ="" ;
result = oss.str();
//------------------------------------------------------------------------------
objWin->label3->set_text (result); //on modifie le label
//de lobjet qui vien d'etre créé c enfaite la fenetre que l'on modifie
//passage en parametre de this ds la fonction pthread_create
// sleep(30);// /!\ sleep en seconde
sleep(1);
}
pthread_exit (0);
}
window1::window1(){
//un constructeur ...
}
void window1::on_button1_clicked(){
// creation du thread
if (pthread_create (&thread1, NULL,mafonction , this) < 0);
// action
exit (1);
}
merci de votre aide j'espere que je ne suis pa le seul a programmer comme sa ....
je me sert de anjuta pour codé pour editer l'ihm anjuta appele glade .. et je genere un code c++ avec glade
les elements comme la fenetre sont contenu en public dans la classe window1_glade
Dernière modification par aznur (Le 14/04/2006, à 00:44)
Hors ligne
#2 Le 19/04/2006, à 11:41
- aznur
Re : probleme de rafraichisement d'une fenetre gtk glade anjuta
hum hum hum non personne vraiment ?:rolleyes:
eu personne peu poster par politesse ... 55 personne et aucune ne compatit
Dernière modification par aznur (Le 20/04/2006, à 18:13)
Hors ligne