Bonjour,

Je développe une IHM en C++ en utilisant les librairies Ogre et CEGUI.
Je désire créer un dock (un panel conteneur qui est composé d'un panel de stats et d'un panel de réaction avec la souris).
Quand le panel de stats est caché, un clic sur le panel souris permet d'ouvrir le panel de stats, un nouveau clic sur le panel souris permet de cacher le panel stats.

Voici le code que j'utilise :
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
foldDock(win, win_stats, 0);
 
void foldDock(CEGUI::Window* win, CEGUI::Window* win_stats, float max) {
 
  if(!win_stats->getProperty("Visible").compare("False"))
    win_stats->setProperty("Visible", "True"); 
 
  //recuperer la position X courante du dock conteneur
  CEGUI::UDim ud = win->getXPosition();
  float pos_x = ud.d_scale;
 
  while(pos_x != max) {
	char c_pos[4];
 
	if(pos_x > max)
	  pos_x -= 0.01;
	else
	  pos_x += 0.01;
 
	//arrondir a 2 chiffres apres la virgule (probleme de precision)
	sprintf(c_pos, "%.2f", pos_x);
	string s_pos(c_pos);
	pos_x = atof(c_pos);
 
	cout << s_pos << endl;
 
    win->setProperty("UnifiedXPosition", "{" + s_pos + ",0}");
    sleep(1);
  }			
}
Au départ, le conteneur principal (win) est à la position -0.27 (le conteneur stats est caché). Pour afficher les stats, il faut positionner win à 0.
Ce code ne réalise pas tout à fait ce que je souhaite. Actuellement, il affiche sur la sortie standard les étapes (de 0.01 en 0.01) toutes les secondes, mais ne met à jour la position du conteneur sur l'interface qu'une fois qu'on est sorti de la boucle.
Ce que j'aimerai faire, c'est découvrir et cacher le panel stats progressivement (et donc à chaque passage de la boucle, et logiquement à chaque appel de setProperty() ), et non pas tout d'un coup.