Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

#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

Haut de page ↑