bonjour , I miss all of you,,,,
voila je plente !!!!!!!!!!!!!!!! CTRL - ALT - SUPP

pourtant c'est un code basique, une simple bouton pour faire quitter(closeDevice) mais dés que je met le curseur sur le bouton un message style billGates ""arrêt du processus par windows"",,,,,,,,,,, ce qui me semble étrange que j'ai suivi le meme démarche qu'avec le code de l'exemple sdk irrlicht N°5:userInterface. please help et merci
#include <irrlicht.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
using namespace std;
#pragma comment(lib, "Irrlicht.lib")
IrrlichtDevice *device = 0;
core::stringc StartUpModelFile;
core::stringw MessageText;
core::stringw Caption;
/*------------------------------------------------------*/
class MyEventListener : public IEventReceiver
{
public:
virtual bool OnEvent(const SEvent& event) //on surcharge la methode OnEvent
{
if (event.EventType == EET_GUI_EVENT)
{
s32 id = event.GUIEvent.Caller->getID();
IGUIEnvironment* gui_environment = device->getGUIEnvironment();
switch(event.GUIEvent.EventType)
{
case EGET_BUTTON_CLICKED:
if (id == 101)
{
device->closeDevice();
cout << "erreur ici !!" << endl;
return true;
}
default:
break;
}
}
return false;
}
};
/* ********************************************************************************************************************** */
/* ********************************************************************************************************************** */
int main()
{
cout << "\ pfa_____Esprit-3D-Simulation________realised by Achraf _&_ Wajdi\
";
cout << "\
\
\
\ \ *********** Welcome to our test console ***********";
/*variable to save the user driver choice*/
E_DRIVER_TYPE userDevice;
printf("\
\
Please choose your driver type :");
printf("\
(1) Direct3D 9.0c\
(2) Direct3D 8.1\
(3) OpenGL 1.5\
"\\
" (4) Software Renderer\
(5) Burning's Software Renderer\
"\\
" (6) NullDevice\
(otherKey) exit\
\
");
int i;
cin >>i;
switch(i)
{
case 1: userDevice = video::EDT_DIRECT3D9;break;
case 2: userDevice = video::EDT_DIRECT3D8;break;
case 3: userDevice = video::EDT_OPENGL; break;
case 4: userDevice = video::EDT_SOFTWARE; break;
case 5: userDevice = video::EDT_BURNINGSVIDEO;break;
case 6: userDevice = video::EDT_NULL; break;
default: return 1;
}
IrrlichtDevice *device = createDevice(userDevice,dimension2d<s32>(1024,768),32,
false, false, false, 0);
/* Title for the window created*/
device->setWindowCaption(L"Virtuel Esprit-3D-Simulation");
device->setResizeAble(true);
IVideoDriver *driver = device->getVideoDriver();
ISceneManager *scene_manager = device->getSceneManager();
IGUIEnvironment *gui_environment = device->getGUIEnvironment();
/*Remember : driver ----- scene_manager ------ gui_environement */
MyEventListener receiver; //objet de la calsse crée MyEventReciever
device->setEventReceiver(&receiver);
/* ********************************************************************************************************************** */
/* ********************************************************************************************************************** */
/* Description : les éléments de la scene */
/* ********************************************************************************************************************** */
/* ********************************************************************************************************************** */
// read configuration from xml file
io::IXMLReader* xml = device->getFileSystem()->createXMLReader(
"achraf_config.xml");
while(xml && xml->read())
{
switch(xml->getNodeType())
{
case io::EXN_TEXT:
// in this xml file, the only text which occurs is the messageText
MessageText = xml->getNodeData();
break;
case io::EXN_ELEMENT:
{
if (core::stringw("startUpModel") == xml->getNodeName())
StartUpModelFile = xml->getAttributeValue(L"file");
else
if (core::stringw("messageText") == xml->getNodeName())
Caption = xml->getAttributeValue(L"caption");
}
break;
}
}
if (xml)
xml->drop(); // don't forget to delete the xml reader
// add the blue screen wallpaper
ITexture *wallpaper = driver->getTexture("../../media/blue_screen.jpg"); // instance pour contenir l'image & ajouter le lien de l'image
if (!wallpaper){
cout << "probleme de chargement de l'image blue_screen" << endl;
return 1;
}
ITexture *esprit_logo = driver->getTexture("../../media/esprit_logo.jpg");
if (!esprit_logo) {
cout << "probleme de chargement de l'image esprit_logo" << endl;
return 1;
}
//driver->makeColorKeyTexture (esprit_logo, video::SColor (0,255,255,255)); choose a color to be transparent
IGUISkin* skin = gui_environment->getSkin();
IGUIFont* font = gui_environment->getFont("../../media/fonthaettenschweiler.bmp");
if (font)
skin->setFont(font);
skin->setFont(gui_environment->getBuiltInFont(), EGDF_TOOLTIP);
gui_environment->addButton(rect<s32>(900,710,1000,710 + 32), 0, 101, L"Quitter", L"Quitter l'application");
//gui_environment->addButton(rect<s32>(10,280,110,280 + 32), 0, 102, L"New Window", L"Launches a new Window");
//gui_environment->addButton(rect<s32>(10,320,110,320 + 32), 0, 103, L"File Open", L"Opens a file");
/* ********************************************************************************************************************** */
/* ********************************************************************************************************************** */
while(device->run() && driver)
{
if (device->isWindowActive())
{
driver->beginScene(true, true, SColor(255,218,218,218));
driver->draw2DImage(wallpaper,core::position2d<s32> (0,100));
driver->draw2DImage(esprit_logo,core::position2d<s32> (0,0));
scene_manager->drawAll();
gui_environment->drawAll();
driver->endScene();
}
else
device->yield();
}
device->drop();
return 0;
}