[SDL/WxWidgets] Events

djardjar Messages postés 3 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 29 mars 2005 - 28 mars 2005 à 14:47
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 - 29 mars 2005 à 21:28
Bonjour !



Comment on gere les évenements de la SDL dans une fenêtre WxWidgets ?
En fait, je voudrais placer ceci dans une fenêtre WxWidgets afin de pouvoir gerer le clavier

avec la SDL:



while(SDL_PollEvent(&event_)) {

// Type d'évènement

switch(event_.type)

{

case SDL_KEYDOWN:

wxMessageBox("Salut!"....);

break;



// Si on relache une touche

case SDL_KEYUP:

break;



default: break;

}

}



Merci à celui qui me repondra !

6 réponses

Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
28 mars 2005 à 15:08
Heu t'as réussi à mixer SDL et wxWidgets à part ça? Parce que je doute que ce soit possible...dsl...

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
28 mars 2005 à 15:10
Enfin, quand je dis pas possible, je parle de dessiner avec SDL dans une fenêtre wxWidgets.

Maintenant, si ce que tu veux c'est avoir d'un côté une fenêtre SDL et
de l'autre une wxWidgets le tout dans le même prog, c'est peut-être
possible, faut voir avec les threads...

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
0
djardjar Messages postés 3 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 29 mars 2005
28 mars 2005 à 16:09
Je sais qu'il n'est pas possible de dessiner dans un WxWidget avec la
SDL, mais cependant j'ai réussi avec opengl. Maintenant ce que je me
demande, c'est comment on fait pour intercepter les évenements du
clavier dans une fenetre WxWidget avec la SDL... J'utilise juste la SDL
pour les outils qu'elle propose en dehors de l'affichage ! Voici mon
code plus complet (j'avance entre temps):



#include <cassert>

#include <cmath>



#include <wx/wx.h>

#include <wx/glcanvas.h>

#include <wx/notebook.h>

#include <SDL/sdl.h>



class GL_Window : public wxGLCanvas

{

public:

GL_Window(float c, wxWindow* parent, wxWindowID id,
const wxPoint& pos, const wxSize& size, long style=0,

const
wxString& name="GLCanvas", int* attribList = 0, const
wxPalette& palette = wxNullPalette)

: wxGLCanvas(parent, id, pos,
size, style, name, attribList, palette), c_(c), rotate_(c) {}

virtual ~GL_Window() {}



void draw() {

rotate_ += 0.01;



SetCurrent();

glClearColor(0.0, 0.0, 0.0, 0.0);

glClear(GL_COLOR_BUFFER_BIT);

glViewport(0, 0, (GLint)200, (GLint)200);

glColor3f(1.0, c_, c_);



glBegin(GL_POLYGON);

glVertex3f(-0.5, -0.5, 5*cos(rotate_));

glVertex3f(-0.5, 0.5, 5*cos(rotate_));

glVertex3f(0.5, 0.5, -5*cos(rotate_));

glVertex3f(0.5, -0.5, -5*cos(rotate_));

glEnd();



SwapBuffers();

}



void OnIdle(wxIdleEvent& event) {

SDL_Event SDLEvent;

/* Check for events */

if (SDL_PollEvent (&SDLEvent))

{

switch (SDLEvent.type)

{

case SDL_KEYDOWN:

wxMessageBox("Hello", "Hello", wxOK);

break;

default:

break;

}

}



draw();

event.RequestMore();

}

private:

float c_;

float rotate_;



DECLARE_EVENT_TABLE();

};



class MyApp: public wxApp

{

virtual bool OnInit();

};



IMPLEMENT_APP(MyApp)



bool MyApp::OnInit()

{

wxFrame* frame = new wxFrame((wxFrame *)NULL, -1, "Hello GL World", wxPoint(50,50), wxSize(640,480) );

GL_Window* MyGLCanvas = new GL_Window(1, frame, -1,
wxPoint(-1,-1), wxSize(640,480), wxNO_BORDER, "some text");



frame->ShowFullScreen(TRUE, wxFULLSCREEN_ALL);

frame->Show(TRUE);

return TRUE;

}



BEGIN_EVENT_TABLE(GL_Window, wxGLCanvas)

EVT_IDLE(GL_Window::OnIdle)

END_EVENT_TABLE()
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
29 mars 2005 à 00:04
Waaa ouhla nan franchement laisse tomber; la SDL sert à récupérer les évènements pour sa fenêtre, pas pr celle de wxWidgets.

Si tu veux utiliser wx et OpenGL, à ce moment-là je ne pense pas qu'il
y ait grand chose (à part un vrai fullscreen) qui soit faisable avec
SDL et pas avec wxWidgets.

Renseigne-toi sur les évènements de wxWidgets plutôt ;)

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djardjar Messages postés 3 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 29 mars 2005
29 mars 2005 à 17:47
Même pour le joystick ? Haaarg j'y avais pas pensé à celui la ! Comment je vais faire !
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
29 mars 2005 à 21:28
Comme tu peux le voir là : http://www.lpthe.jussieu.fr/~zeitlin/wxWindows/docs/wxwin_classref.html#classref

wxJoystick et wxJoystickEvent sont 2 classes de wxWidgets ;)



(hé oui, l'est puissant ce p'tit wxWidgets...;))

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
0
Rejoignez-nous