Historique des modifications - Message

Message #1781

Sujet: Recuperer du texte


Type Date Auteur Contenu
Dernière modification 04-03-2007 13:08:02 katsankat
Salut,

"on" s'est trompé.

Pour récupérer le texte d'un IGUIEditBox il faut invoquer sa méthode getText().
De plus l' évènement EGET_EDITBOX_ENTER intervient lorsqu'on appuie sur entrée dans l' EditBox.

Un exemple, assez court:

#include <irrlicht.h>

using namespace irr;
using namespace core;
using namespace video;
using namespace gui;

/*------------------------------------------------------------------------------
  Evenements
------------------------------------------------------------------------------*/
class MyEventReceiver : public IEventReceiver
{
 public:
  MyEventReceiver(IGUIListBox* Console, IGUIEditBox* TxtSaisie)
  {
    saisie  = TxtSaisie;
    listbox = Console;
  }

  virtual bool OnEvent(SEvent event)
  {
    if (event.EventType == EET_GUI_EVENT)
    {
       if (event.GUIEvent.EventType == EGET_EDITBOX_ENTER)
       {
         listbox->addItem(saisie->getText());
         saisie->setText(L"");
         return true;
       }
    }
    return false;
  }

 private:
   IGUIEditBox* saisie;
   IGUIListBox* listbox;
};

/*------------------------------------------------------------------------------
  Point d'entree
------------------------------------------------------------------------------*/
int main(int argc, char **argv)
{
  s32 HEIGHT=200;
  s32 WIDTH =200;

  IrrlichtDevice* device = createDevice(EDT_OPENGL,
	dimension2d<s32>(HEIGHT, WIDTH), 24, false, false, false);
  if (!device) return 1;

  IVideoDriver*        driver = device->getVideoDriver();
  scene::ISceneManager*  smgr = device->getSceneManager();
  IGUIEnvironment*       igui = device->getGUIEnvironment();

  IGUIFont* font = igui->getFont("../../media/fonthaettenschweiler.bmp");
  igui->getSkin()->setFont(font);

  // Listbox pour stocker les messages
  IGUIListBox *Console = igui->addListBox(rect<s32>(0,0, WIDTH, HEIGHT-20), 0, 1, true);
  //Zone de saisie
  position2d<s32>  pos  (0,HEIGHT-20);
  dimension2d<s32> size ( WIDTH, 20);
  IGUIEditBox* TxtSaisie =  igui->addEditBox (	L"saisie", rect<s32>(pos,size), false, NULL, -1);
               TxtSaisie->setOverrideColor (video::SColor(255,10,200,10));

  MyEventReceiver *receiver = new MyEventReceiver(Console, TxtSaisie);
  device->setEventReceiver(receiver);

  while (device->run())
  {
    driver->beginScene(true, true, 0);
    igui->drawAll();
    driver->endScene();
  }

  device->drop();
  delete receiver;
  return 0;
}
Création du message 04-03-2007 13:01:19 katsankat
Salut,

"on" s'est trompé.

Pour récupérer le texte d'un IGUIEditBox il faut invoquer sa méthode getText().
De plus l' évènement EGET_EDITBOX_ENTER intervient lorsqu'on appuie sur entrée dans l' EditBox.

Un exemple, assez court:

#include <irrlicht.h>

using namespace irr;
using namespace core;
using namespace video;
using namespace gui;

/*------------------------------------------------------------------------------
  Evenements
------------------------------------------------------------------------------*/
class MyEventReceiver : public IEventReceiver
{
 public:
  MyEventReceiver(IGUIListBox* Console, IGUIEditBox* TxtSaisie)
  {
    saisie  = TxtSaisie;
    listbox = Console;
  }

  virtual bool OnEvent(SEvent event)
  {
    if (event.EventType == EET_GUI_EVENT)
    {
       if (event.GUIEvent.EventType == EGET_EDITBOX_ENTER)
       {
         listbox->addItem(saisie->getText());
         saisie->setText(L"");
         return true;
       }
    }
    return false;
  }

 private:
   IGUIEditBox* saisie;
   IGUIListBox* listbox;
};

/*------------------------------------------------------------------------------
  Point d'entree
------------------------------------------------------------------------------*/
int main(int argc, char **argv)
{
  s32 HEIGHT=200;
  s32 WIDTH =200;

  IrrlichtDevice* device = createDevice(EDT_OPENGL,
	dimension2d<s32>(HEIGHT, WIDTH), 24, false, false, false);
  if (!device) return 1;

  IVideoDriver*        driver = device->getVideoDriver();
  scene::ISceneManager*  smgr = device->getSceneManager();
  IGUIEnvironment*       igui = device->getGUIEnvironment();

  IGUIFont* font = igui->getFont("../../media/fonthaettenschweiler.bmp");
  igui->getSkin()->setFont(font);

  // Listbox pour stocker les messages
  IGUIListBox *Console = igui->addListBox(rect<s32>(0,0, WIDTH, HEIGHT-20), 0, 1, true);
  //Zone de saisie
  position2d<s32>  pos  (0,HEIGHT-20);
  dimension2d<s32> size ( WIDTH, 20);
  IGUIEditBox* TxtSaisie =  igui->addEditBox (	L"saisie", rect<s32>(pos,size), false, NULL, -1);
               TxtSaisie->setOverrideColor (video::SColor(255,10,200,10));

  MyEventReceiver *receiver = new MyEventReceiver(Console, TxtSaisie);
  device->setEventReceiver(receiver);

  while (device->run())
  {
    driver->beginScene(true, true, 0);
    igui->drawAll();
    driver->endScene();
  }

  device->drop();
  delete receiver;
  return 0;
}

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
144 invités en ligne
membre en ligne: -
RSS Feed