Bonjours,
Voici mon problème,
Je voudrais faire un menu qui s'ouvre quand on presse une touche,
Mais le truc c'est que quand je presse ma touche dans le jeux une belle fenêtre windows (Envoyer, ne pas envoyer) s'affiche,
Donc je vois pas d'où peut provenir ce problème
Voici mon code :
main.cpp
#include "CEventReceiver.h"
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
using namespace std;
int main(void)
{
IrrlichtDevice* device = createDevice(video::EDT_OPENGL, core::dimension2d<s32>(1000, 700), 32,false,false,false);
video::IVideoDriver* driver = device->getVideoDriver ();
scene::ISceneManager* scenegraph = device->getSceneManager ();
scene::ISceneManager* smgr = device->getSceneManager();
irr::scene::ISceneManager *sceneManager = device->getSceneManager ();
gui::IGUIEnvironment *gui = scenegraph->getGUIEnvironment();
.....
gui::IGUIButton *btn_quit = gui->addButton(core::rect<s32>(20,50,120,70), 0, -1, L"Quit");
gui::IGUIButton *btn_inv = gui->addButton(core::rect<s32>(20,70,120,90), 0, -1, L"Invetaire");
IGUIWindow* fen_inv = gui->addWindow(
core::rect< s32 >(40,20,400,450),
false,
L"",
0,
-1
);
CIEventReceiver receiver2(fen_inv);
device->setEventReceiver(&receiver2);
while (device->run())
{
driver->beginScene(true,true,video::SColor(0,200,200,200));
scenegraph->drawAll ();
gui->drawAll();
driver->endScene ();
fen_inv->gui::IGUIElement::setVisible(false);
receiver2.majInv();
}
device->drop ();
return 0;
}
CEventReceiver.cpp
#include "CEventReceiver.h"
using namespace irr;
using namespace gui;
CIEventReceiver::CIEventReceiver(irr::gui::IGUIWindow* fen_inv)
{
//On pointe le mesh passe en parametre.
//Par defaut on ne bouge pas
m_isVisible = false;
}
bool CIEventReceiver::OnEvent(const irr::SEvent &event2)
{
if(fen_inv != 0
&& event2.EventType == irr::EET_KEY_INPUT_EVENT
&& event2.KeyInput.PressedDown == true
&& event2.KeyInput.Key == irr::KEY_KEY_I)
{
if(m_isVisible == false)
m_isVisible = true;
return true;
}
if(fen_inv != 0
&& event2.EventType == irr::EET_KEY_INPUT_EVENT
&& event2.KeyInput.PressedDown == false
&& event2.KeyInput.Key == irr::KEY_KEY_I)
{
//La touche est relachee, on arrete de bouger
m_isVisible = false;
return false;
}
return false;
}
void CIEventReceiver::majInv()
{
//On verifie que le pointeur vers le mesh est
//ok et que la touche est enfoncee
if(fen_inv != 0 && m_isVisible == true)
{
fen_inv->irr::gui::IGUIElement::setVisible(true);
}
}
CEventReceiver.h
#include <IRR/irrlicht.h>
#include <iostream>
class CIEventReceiver : public irr::IEventReceiver
{
public :
CIEventReceiver(irr::gui::IGUIWindow* fen_inv);
void majInv();
private :
bool OnEvent(const irr::SEvent &event2);
irr::gui::IGUIWindow* fen_inv;
bool m_isVisible;
};
Merci pour vos réponses