Dependance de fenetres sous GLUI

Dependance de fenetres sous GLUI - C++ - Programmation

Marsh Posté le 25-03-2004 à 18:47:48    

Salut,
j´ai petit prob avec GLUI, j´ai une scene ou il m´est possible d´editer les proprietes des objets.Pour cela j´affiche une fenetre GLUI qui permet de le faire.Le prob,c´est que quand je la ferme la fenetre principale qui contient la scene se ferme aussi!!!
Que faire?
+

Reply

Marsh Posté le 25-03-2004 à 18:47:48   

Reply

Marsh Posté le 25-03-2004 à 18:49:18    

j´oubliais,voila le code pour afficher la fenetre:

Code :
  1. void CFenetreGL::ModifierProprietes(int id)
  2. {
  3. glui_subwin2 = GLUI_Master.create_glui("Modifier les proprietes de l´objet",0,100,250);
  4. //La couleur est concerne tous les types d'objets
  5. glui_subwin2->add_statictext( "Couleur de l´objet courant" );
  6. GLUI_Spinner * SpinRed=glui_subwin2->add_spinner( "Red",GLUI_SPINNER_INT,&SpinnerRed,51,CGlutMaster::CallBackCouleur);
  7. SpinRed->set_int_val((ObjSelectionne->GetColor()).GetRed());
  8. GLUI_Spinner * SpinGreen=glui_subwin2->add_spinner( "Green",GLUI_SPINNER_INT,&SpinnerGreen,52,CGlutMaster::CallBackCouleur );
  9. SpinGreen->set_int_val((ObjSelectionne->GetColor()).GetGreen());
  10. GLUI_Spinner * SpinBlue=glui_subwin2->add_spinner( "Blue",GLUI_SPINNER_INT,&SpinnerBlue,53,CGlutMaster::CallBackCouleur);
  11. SpinBlue->set_int_val((ObjSelectionne->GetColor()).GetBlue());
  12. SpinRed->set_int_limits(0,256,GLUI_LIMIT_WRAP);
  13. SpinBlue->set_int_limits(0,256,GLUI_LIMIT_WRAP);
  14. SpinGreen->set_speed(0.5);
  15. SpinGreen->set_int_limits(0,256,GLUI_LIMIT_WRAP);
  16. SpinRed->set_speed(0.5);
  17. SpinBlue->set_speed(0.5);
  18. if ((ObjSelectionne->GetType() != Type_Balle) && (ObjSelectionne->GetType() != Type_Fanion))
  19. {
  20. MessageBox( NULL, "Mefiez vous, si vous changez le facteur d`echelle,la detection pourrait ne plus marcher!", "Avertissement", MB_ICONEXCLAMATION|MB_OK|MB_TASKMODAL );
  21. glui_subwin2->add_column(true);
  22. glui_subwin2->add_statictext( "Taille de l´objet courant" );
  23. GLUI_Spinner * SpinSizeX=glui_subwin2->add_spinner( "Echelle en X",GLUI_SPINNER_FLOAT, &EchelleX,57,CGlutMaster::CallBackEchelle );
  24. SpinSizeX->set_float_val(ObjSelectionne->GetEchelleX());
  25. GLUI_Spinner * SpinSizeY=glui_subwin2->add_spinner( "Echelle en Y",GLUI_SPINNER_FLOAT, &EchelleY,58,CGlutMaster::CallBackEchelle );
  26. SpinSizeY->set_float_val(ObjSelectionne->GetEchelleY());
  27. GLUI_Spinner * SpinSizeZ=glui_subwin2->add_spinner( "Echelle en Z",GLUI_SPINNER_FLOAT, &EchelleZ,59,CGlutMaster::CallBackEchelle );
  28. SpinSizeZ->set_float_val(ObjSelectionne->GetEchelleZ());
  29. SpinSizeX->set_int_limits(0,11,GLUI_LIMIT_WRAP);
  30. SpinSizeY->set_int_limits(0,11,GLUI_LIMIT_WRAP);
  31. SpinSizeZ->set_int_limits(0,11,GLUI_LIMIT_WRAP);
  32. }
  33. //On ne peut pas deplacer un objet polygonal simplement avec son centre
  34. if ((ObjSelectionne->GetType() != Type_Balle) && (ObjSelectionne->GetType() != Type_Fanion))
  35. {
  36. glui_subwin2->add_column(true);
  37. glui_subwin2->add_statictext( "Position de l´objet" );
  38. GLUI_Spinner * Xpos=glui_subwin2->add_spinner( "Variation en X",GLUI_SPINNER_FLOAT,&SpinnerPosX,54,CGlutMaster::CallBackPosition);
  39. Xpos->set_float_val((ObjSelectionne->GetPosition()).GetX());
  40. GLUI_Spinner * Ypos=glui_subwin2->add_spinner( "Variation en Y",GLUI_SPINNER_FLOAT,&SpinnerPosY,55,CGlutMaster::CallBackPosition);
  41. Ypos->set_float_val((ObjSelectionne->GetPosition()).GetY());
  42. GLUI_Spinner * Zpos=glui_subwin2->add_spinner( "Variation en Z",GLUI_SPINNER_FLOAT,&SpinnerPosZ,56,CGlutMaster::CallBackPosition);
  43. Zpos->set_float_val((ObjSelectionne->GetPosition()).GetZ());
  44. Xpos->set_int_limits(-100,100,GLUI_LIMIT_WRAP);
  45. Ypos->set_int_limits(-100,100,GLUI_LIMIT_WRAP);
  46. Zpos->set_int_limits(-100,100,GLUI_LIMIT_WRAP);
  47. }
  48. else
  49. {
  50. glui_subwin2->add_column(true);
  51. glui_subwin2->add_statictext( "Position de l´objet" );
  52. GLUI_Spinner * Xpos=glui_subwin2->add_spinner( "X Position",GLUI_SPINNER_FLOAT,&SpinnerPosX,54,CGlutMaster::CallBackPosition);
  53. Xpos->set_float_val((ObjSelectionne->GetPosition()).GetX());
  54. GLUI_Spinner * Ypos=glui_subwin2->add_spinner( "Y Position",GLUI_SPINNER_FLOAT,&SpinnerPosY,55,CGlutMaster::CallBackPosition);
  55. Ypos->set_float_val((ObjSelectionne->GetPosition()).GetY());
  56. GLUI_Spinner * Zpos=glui_subwin2->add_spinner( "Z Position",GLUI_SPINNER_FLOAT,&SpinnerPosZ,56,CGlutMaster::CallBackPosition);
  57. Zpos->set_float_val((ObjSelectionne->GetPosition()).GetZ());
  58. }
  59. GLUI_Button *Element5= glui_subwin2->add_button(" Fermer" , 30,CGlutMaster::CallBackBoutton2/*NULL/*TraiteBoutton1()*/);
  60. glui_subwin2->set_main_gfx_window(GetNumeroFen());
  61. GLUI_Master.set_glutIdleFunc(NULL);
  62. glui_subwin2->show();
  63. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed