Aktuelle Zeit: 28.04.2024, 03:44

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Eventreceiver läuft nicht
BeitragVerfasst: 05.10.2008, 14:57 
Offline

Registriert: 23.07.2008, 15:42
Beiträge: 41
Hi,
Ich hab (mal wieder) ein problem mit dem Eventreceiver.
Ich habe folgenden code:
Code:
#include "irrlicht.h"
#include <cstdlib>
#include <iostream>

#define SINGLEPLAYER  1
#define MULTIPLAYER   2
#define OPTIONS       3
#define CREDITS       4
#define QUIT          5

using namespace irr;
using namespace core;
using namespace io;
using namespace video;
using namespace gui;
using namespace std;




IrrlichtDevice *MainMenuDevice = 0;
IGUIEnvironment *MainMenu = MainMenuDevice->getGUIEnvironment();
class MainMenuEventReceiver : public IEventReceiver
{
public:
   virtual bool OnEvent(const SEvent& event)
   {
      if (event.EventType == EET_GUI_EVENT)
      {
         s32 id = event.GUIEvent.Caller->getID();
         IGUIEnvironment *MainMenu = MainMenuDevice->getGUIEnvironment();

         switch(event.GUIEvent.EventType)
         {

         case EGET_BUTTON_CLICKED:

            if (id == QUIT)
            {
               MainMenuDevice->closeDevice();
               return true;
            }


            break;

         }
      }

      return false;
   }
};

bool LoadMainMenu(void)  //loads the Main menu
{


MainMenuDevice = createDevice(EDT_OPENGL, core::dimension2d<s32>(425, 350)); //Create the device


MainMenuEventReceiver MainMenuEventReceiver;
MainMenuDevice->setEventReceiver(&MainMenuEventReceiver),

IGUIEnvironment *MainMenu = MainMenuDevice->getGUIEnvironment();
IVideoDriver *driver = MainMenuDevice->getVideoDriver(); //get the videodriver

IGUISkin* skin = MainMenu->getSkin(); //load the skin to set a font
IGUIFont* font = MainMenu->getFont("C:/myfont.xml"); //load font
if (font)
skin->setFont(font); //set font if there is a font
skin->setFont(MainMenu->getBuiltInFont(), EGDF_TOOLTIP);

MainMenu->addButton(rect<s32>(64, 256, 360, 304), 0, QUIT, L"Beenden");           //}
MainMenu->addButton(rect<s32>(64, 200, 360, 248), 0, CREDITS, L"Credits");        //}
MainMenu->addButton(rect<s32>(64, 144, 360, 192), 0, OPTIONS, L"Optionen");       //}create the buttons
MainMenu->addButton(rect<s32>(64, 88, 360, 136), 0, MULTIPLAYER, L"Mehrspieler"); //}
MainMenu->addButton(rect<s32>(64, 32, 360, 80), 0, SINGLEPLAYER, L"Einzelspieler");//}


while(MainMenuDevice->run() && driver) //draw the whole stuff
   if (MainMenuDevice->isWindowActive())
   {
      MainMenuDevice->getVideoDriver()->beginScene(true, true, SColor(0,200,200,200));

      MainMenu->drawAll();

      MainMenuDevice->getVideoDriver()->endScene();
   }

   MainMenuDevice->drop();

   return 0;
}






dann erhalte ich die Fehlermeldung:
'irr::gui::IGUIEnvironment': Ungültige Verwendung dieses Typs als Ausdruck|
||=== Build finished: 1 errors, 1 warnings ===|

wenn ich den receiver rausnehme funktioniert das programm .
Wo hab ich da einen fehler?

_________________
Lebe jeden Tag als wäre es dein letzter-
irgentwann wirst du Recht haben.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Eventreceiver läuft nicht
BeitragVerfasst: 05.10.2008, 18:07 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
gibt er dir eine zeilennummer?

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Eventreceiver läuft nicht
BeitragVerfasst: 05.10.2008, 18:58 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Code:
MainMenuEventReceiver MainMenuEventReceiver;


ist das gleiche wie:

Code:
class class {};


Du musst deiner Variable schon einen anderen Namen geben, als der Klasse

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Eventreceiver läuft nicht
BeitragVerfasst: 06.10.2008, 18:28 
Offline

Registriert: 23.07.2008, 15:42
Beiträge: 41
Sylence hat geschrieben:
Du musst deiner Variable schon einen anderen Namen geben, als der Klasse


Das ist schon besser.
Allerdings erhalte ich jetzt dieselbe Fehlermeldung nur für
Code:
IGUIEnvironment *MainMenu = MainMenuDevice->getGUIEnvironment();


|64|error C2275: 'irr::gui::IGUIEnvironment': Ungltige Verwendung dieses Typs als Ausdruck|
||=== Build finished: 1 errors, 1 warnings ===|

_________________
Lebe jeden Tag als wäre es dein letzter-
irgentwann wirst du Recht haben.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Eventreceiver läuft nicht
BeitragVerfasst: 06.10.2008, 19:06 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Das musst du ja auch in einer Funktion machen und nicht im global-scope. Würde sowieso nur einen Speicherzugriffsfehler geben.

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Eventreceiver läuft nicht
BeitragVerfasst: 06.10.2008, 19:29 
Offline

Registriert: 23.07.2008, 15:42
Beiträge: 41
Mein neuer code:
Code:
#include "irrlicht.h"
#include <cstdlib>
#include <iostream>

#define SINGLEPLAYER  1
#define MULTIPLAYER   2
#define OPTIONS       3
#define CREDITS       4
#define QUIT          5

using namespace irr;
using namespace core;
using namespace io;
using namespace video;
using namespace gui;
using namespace std;




IrrlichtDevice *MainMenuDevice = 0;

class MainMenuEventReceiver : public IEventReceiver
{
public:
   virtual bool OnEvent(const SEvent& event)
   {
      if (event.EventType == EET_GUI_EVENT)
      {
         s32 id = event.GUIEvent.Caller->getID();


         switch(event.GUIEvent.EventType)
         {

         case EGET_BUTTON_CLICKED:

            if (id == QUIT)
            {
               MainMenuDevice->closeDevice();
               return true;
            }


            break;

         }
      }

      return false;
   }
};

bool LoadMainMenu(void)  //loads the Main menu
{


MainMenuDevice = createDevice(EDT_OPENGL, core::dimension2d<s32>(425, 350)); //Create the device


MainMenuEventReceiver MenuEventReceiver;
MainMenuDevice->setEventReceiver(&MenuEventReceiver),

IGUIEnvironment *MainMenu = MainMenuDevice->getGUIEnvironment();
IVideoDriver *driver = MainMenuDevice->getVideoDriver(); //get the videodriver

IGUISkin* skin = MainMenu->getSkin(); //load the skin to set a font
IGUIFont* font = MainMenu->getFont("C:/HardWar/Gui/myfont.xml"); //load font
if (font)
skin->setFont(font); //set font if there is a font
skin->setFont(MainMenu->getBuiltInFont(), EGDF_TOOLTIP);

MainMenu->addButton(rect<s32>(64, 256, 360, 304), 0, QUIT, L"Beenden");           //}
MainMenu->addButton(rect<s32>(64, 200, 360, 248), 0, CREDITS, L"Credits");        //}
MainMenu->addButton(rect<s32>(64, 144, 360, 192), 0, OPTIONS, L"Optionen");       //}create the buttons
MainMenu->addButton(rect<s32>(64, 88, 360, 136), 0, MULTIPLAYER, L"Mehrspieler"); //}
MainMenu->addButton(rect<s32>(64, 32, 360, 80), 0, SINGLEPLAYER, L"Einzelspieler");//}


while(MainMenuDevice->run() && driver) //draw the whole stuff
   if (MainMenuDevice->isWindowActive())
   {
      MainMenuDevice->getVideoDriver()->beginScene(true, true, SColor(0,200,200,200));

      MainMenu->drawAll();

      MainMenuDevice->getVideoDriver()->endScene();
   }

   MainMenuDevice->drop();

   return 0;
}




Ich erhalte dieselbe meldung und mainmenu sei ein unbezeichneter bezeichner.

_________________
Lebe jeden Tag als wäre es dein letzter-
irgentwann wirst du Recht haben.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Eventreceiver läuft nicht
BeitragVerfasst: 06.10.2008, 20:05 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
da fehlt das semikolon hinter setEventReceiver()

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Eventreceiver läuft nicht
BeitragVerfasst: 06.10.2008, 21:04 
Offline

Registriert: 23.07.2008, 15:42
Beiträge: 41
juhu es funktioniert! :D
So ein kleiner dummer fehler

_________________
Lebe jeden Tag als wäre es dein letzter-
irgentwann wirst du Recht haben.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de