1
Suggestions de nouvelles fonctionnalités / Re : OnProcessSamples dans sf::Music
« le: Juin 07, 2013, 03:29:11 pm »
Ah ok je vais essayer comme ça.
merci bien
merci bien
Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.
BEGIN_EVENT_TABLE(wxSFMLCanvas, wxControl)
EVT_IDLE(wxSFMLCanvas::OnIdle)
EVT_PAINT(wxSFMLCanvas::OnPaint)
END_EVENT_TABLE()
obj/Debug/MainFrame.o:(.rodata._ZTV8MyCanvas[vtable for MyCanvas]+0x2c)||undefined reference to `wxSFMLCanvas::GetEventTable() const'|
obj/Debug/MainFrame.o:(.rodata._ZTV8MyCanvas[vtable for MyCanvas]+0x30)||undefined reference to `wxSFMLCanvas::GetEventHashTable() const'|
obj/Debug/wxSFMLCanvas.o:(.rodata._ZTV12wxSFMLCanvas[vtable for wxSFMLCanvas]+0x2c)||undefined reference to `wxSFMLCanvas::GetEventTable() const'|
obj/Debug/wxSFMLCanvas.o:(.rodata._ZTV12wxSFMLCanvas[vtable for wxSFMLCanvas]+0x30)||undefined reference to `wxSFMLCanvas::GetEventHashTable() const'|
obj/Debug/wxSFMLCanvas.o:(.rodata._ZTV12wxSFMLCanvas[vtable for wxSFMLCanvas]+0x284)||undefined reference to `wxSFMLCanvas::OnUpdate()'|
||=== Build finished: 5 errors, 0 warnings (0 minutes, 7 seconds) ===|
/home/damien/Bureau/cpp/test-wx/wxSFMLCanvas.cpp||In member function ‘void wxSFMLCanvas::OnPaint(wxPaintEvent&)’:|
/home/damien/Bureau/cpp/test-wx/wxSFMLCanvas.cpp|53|error: invalid use of incomplete type ‘struct Display’|
/usr/include/X11/Xlib.h|263|error: forward declaration of ‘struct Display’|
||=== Build finished: 2 errors, 0 warnings (0 minutes, 2 seconds) ===|
#ifndef WXSFMLCANVAS_H
#define WXSFMLCANVAS_H
#include <SFML/Graphics.hpp>
#include <wx/wx.h>
class wxSFMLCanvas : public wxControl, public sf::RenderWindow
{
public :
wxSFMLCanvas(wxWindow* Parent = NULL, wxWindowID Id = -1, const wxPoint& Position = wxDefaultPosition,
const wxSize& Size = wxDefaultSize, long Style = 0);
virtual ~wxSFMLCanvas();
private :
DECLARE_EVENT_TABLE()
virtual void OnUpdate();
void OnIdle(wxIdleEvent&);
void OnPaint(wxPaintEvent&);
void OnEraseBackground(wxEraseEvent&);
};
#endif // WXSFMLCANVAS_H
#include "wxSFMLCanvas.h"
#ifdef __WXGTK__
#include <gdk/gdkx.h>
#include <gtk/gtk.h>
#include <wx/gtk/win_gtk.h>
#endif
wxSFMLCanvas::wxSFMLCanvas(wxWindow* Parent, wxWindowID Id, const wxPoint& Position, const wxSize& Size, long Style) :
wxControl(Parent, Id, Position, Size, Style)
{
#ifdef __WXGTK__
// La version GTK requiert d'aller plus profondément pour trouver
// l'identificateur X11 du contrôle
gtk_widget_realize(m_wxwindow);
gtk_widget_set_double_buffered(m_wxwindow, false);
GdkWindow* Win = GTK_PIZZA(m_wxwindow)->bin_window;
XFlush(GDK_WINDOW_XDISPLAY(Win));
sf::RenderWindow::create(GDK_WINDOW_XWINDOW(Win));
#else
// Testé sous Windows XP seulement (devrait fonctionner sous X11 et
// les autres versions de Windows - aucune idée concernant MacOS)
sf::RenderWindow::Create(GetHandle());
#endif
}
wxSFMLCanvas::~wxSFMLCanvas()
{
//dtor
}
void wxSFMLCanvas::OnIdle(wxIdleEvent&)
{
// On génère un rafraîchissement du contrôle, afin d'assurer un framerate maximum
// La fonction Refresh est définie dans wxControl, et génère (entre autres) un évènement paint pour rafraîchir le contrôle.
Refresh();
}
void wxSFMLCanvas::OnPaint(wxPaintEvent&)
{
// On prépare le contrôle à être dessiné (verrouillage de la zone graphique)
wxPaintDC Dc(this);
// On laisse la classe dérivée se mettre à jour et dessiner dans le contrôle
OnUpdate();
// On affiche tout ça à l'écran
Display();
}