Historique des modifications - Message

Message #5053

Sujet: [C++] mini-Second_Life en irrLicht


Type Date Auteur Contenu
Création du message 27-11-2008 12:39:01 achoura
bonjour , I miss all of you,,,,smile

voila je plente !!!!!!!!!!!!!!!! CTRL - ALT - SUPP sad 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;
}

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
233 invités en ligne
membre en ligne: -
RSS Feed