Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/04/2006, à 18: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, à 01:44)

Hors ligne

#2 Le 19/04/2006, à 12: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, à 19:13)

Hors ligne