Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UTILISER WXWIDGETS ET LA SDL EN MÊME TEMPS


Information sur la source

Catégorie :Graphique Classé sous : sdl, wxwidgets Niveau : Initié Date de création : 18/04/2007 Vu : 4 511

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

Description

Ce code montre comment utiliser la SDL dans une fênetre WxWidgets
 

Source

  • #include <iostream>
  • #include <wx/wxprec.h>
  • #ifdef __BORLANDC__
  • #pragma hdrstop
  • #endif
  • #ifndef WX_PRECOMP
  • #include <wx/wx.h>
  • #endif
  • #include <wx/dcbuffer.h>
  • #include <wx/image.h>
  • #include <SDL/SDL.h>
  • enum {
  • ID_FRAME = 10000,
  • ID_PANEL,
  • IDM_FILE_EXIT,
  • IDM_HELP_ABOUT
  • };
  • //le panel qui contiendra le contexte SDL
  • class SDLPanel : public wxPanel {
  • DECLARE_CLASS(SDLPanel)
  • DECLARE_EVENT_TABLE()
  • private:
  • SDL_Surface *screen;
  • void onPaint(wxPaintEvent &event);
  • void onEraseBackground(wxEraseEvent &event){}
  • void onIdle(wxIdleEvent &event);
  • void createScreen();
  • public:
  • SDLPanel(wxWindow *parent);
  • ~SDLPanel();
  • };
  • //la frame
  • class SDLFrame : public wxFrame {
  • DECLARE_CLASS(SDLFrame)
  • DECLARE_EVENT_TABLE()
  • private:
  • SDLPanel *panel;
  • void onFileExit(wxCommandEvent &event){ Close(); }
  • void onHelpAbout(wxCommandEvent &event);
  • public:
  • SDLFrame();
  • SDLPanel &getPanel(){ return *panel; }
  • };
  • //L'application
  • class SDLApp : public wxApp {
  • DECLARE_CLASS(SDLApp)
  • private:
  • SDLFrame *frame;
  • public:
  • bool OnInit();
  • int OnRun();
  • int OnExit();
  • };
  • IMPLEMENT_APP(SDLApp)
  • IMPLEMENT_CLASS(SDLApp, wxApp)
  • //===========================================
  • IMPLEMENT_CLASS(SDLFrame, wxFrame)
  • BEGIN_EVENT_TABLE(SDLFrame, wxFrame)
  • EVT_MENU(IDM_FILE_EXIT, SDLFrame::onFileExit)
  • EVT_MENU(IDM_HELP_ABOUT, SDLFrame::onHelpAbout)
  • END_EVENT_TABLE()
  • //===========================================
  • IMPLEMENT_CLASS(SDLPanel, wxPanel)
  • BEGIN_EVENT_TABLE(SDLPanel, wxPanel)
  • EVT_PAINT(SDLPanel::onPaint)
  • EVT_ERASE_BACKGROUND(SDLPanel::onEraseBackground)
  • EVT_IDLE(SDLPanel::onIdle)
  • END_EVENT_TABLE()
  • //===========================================
  • bool SDLApp::OnInit() {
  • // crée la SDLFrame
  • frame = new SDLFrame;
  • frame->SetClientSize(640, 480);
  • frame->Centre();
  • frame->Show();
  • // Notre frame au premier plan
  • SetTopWindow(frame);
  • //l'initialisation devrais toujours marché.
  • return true;
  • }
  • int SDLApp::OnRun() {
  • //initialise SDL
  • if (SDL_Init(SDL_INIT_VIDEO) < 0) {
  • std::cerr << "Impossible d'initialiser SDL: " << SDL_GetError() << '\n';
  • return -1;
  • }
  • // Met ne place le mode vidéo sans crée de fenetre
  • SDL_SetVideoMode(0, 0, 0, SDL_SWSURFACE);
  • // démare la boucle principale
  • return wxApp::OnRun();
  • }
  • int SDLApp::OnExit() {
  • // quitte la SDL
  • SDL_Quit();
  • //retourne le code de sortie standard
  • return wxApp::OnExit();
  • }
  • SDLFrame::SDLFrame() {
  • // Crée la frame SDL
  • Create(NULL, ID_FRAME, wxT("Frame Title"), wxDefaultPosition,
  • wxDefaultSize, wxCAPTION | wxSYSTEM_MENU |
  • wxMINIMIZE_BOX | wxCLOSE_BOX);
  • // crée la bare de mnu
  • wxMenuBar *mb = new wxMenuBar;
  • // crée le menu file
  • wxMenu *fileMenu = new wxMenu;
  • fileMenu->Append(IDM_FILE_EXIT, wxT("E&xit"));
  • // add the file menu to the menu bar
  • mb->Append(fileMenu, wxT("&File"));
  • // crée le menu aide
  • wxMenu *helpMenu = new wxMenu;
  • helpMenu->Append(IDM_HELP_ABOUT, wxT("About"));
  • // ajoute le menu help a la bare de menus
  • mb->Append(helpMenu, wxT("&Help"));
  • //ajoute la bare de menu la frame
  • SetMenuBar(mb);
  • //crée le panel SDL.
  • panel = new SDLPanel(this);
  • }
  • void SDLFrame::onHelpAbout(wxCommandEvent &) {
  • wxMessageBox(wxT("wx-sdl snippet"),
  • wxT("A propos du snippet WxSDL"), wxOK | wxICON_INFORMATION);
  • }
  • SDLPanel::SDLPanel(wxWindow *parent) : wxPanel(parent, ID_PANEL), screen(NULL) {
  • //definit la taille du panel
  • wxSize size(640, 480);
  • SetMinSize(size);
  • SetMaxSize(size);
  • SetSize(size);
  • //génère une évenement IDLE pour "démarer" la fenêtre.
  • wxIdleEvent event;
  • event.SetEventObject(this);
  • this->AddPendingEvent(event);
  • }
  • SDLPanel::~SDLPanel() {
  • if (screen != NULL) {
  • SDL_FreeSurface(screen);
  • }
  • }
  • void SDLPanel::onPaint(wxPaintEvent &) {
  • // on ne peut dessiner si l'écran n'existe pas
  • if (screen == NULL) {
  • return;
  • }
  • //vérouille l'écran si besoin est.
  • if (SDL_MUSTLOCK(screen)) {
  • if (SDL_LockSurface(screen) < 0) {
  • return;
  • }
  • }
  • // ccrée un bitmap a partir de l'écran
  • wxBitmap bmp(wxImage(screen->w, screen->h,
  • static_cast<unsigned char *>(screen->pixels), true));
  • //devérouille l'écran
  • if (SDL_MUSTLOCK(screen)) {
  • SDL_UnlockSurface(screen);
  • }
  • //paint l'écran
  • wxBufferedPaintDC dc(this, bmp);
  • }
  • void SDLPanel::onIdle(wxIdleEvent &) {
  • // crée screen
  • createScreen();
  • //vérouille si besoin est
  • if (SDL_MUSTLOCK(screen)) {
  • if (SDL_LockSurface(screen) < 0) {
  • return;
  • }
  • }
  • //ne cherchez pas a comprendre , contentez vous de regarder.
  • int tick = SDL_GetTicks();
  • for (int y = 0; y < 480; y++) {
  • for (int x = 0; x < 640; x++) {
  • wxUint32 color = (y * y) + (x * x) + tick;
  • wxUint8 *pixels = static_cast<wxUint8 *>(screen->pixels) +
  • (y * screen->pitch) +
  • (x * screen->format->BytesPerPixel);
  • #if SDL_BYTEORDER == SDL_BIG_ENDIAN
  • pixels[0] = color & 0xFF;
  • pixels[1] = (color >> 8) & 0xFF;
  • pixels[2] = (color >> 16) & 0xFF;
  • #else
  • pixels[0] = (color >> 16) & 0xFF;
  • pixels[1] = (color >> 8) & 0xFF;
  • pixels[2] = color & 0xFF;
  • #endif
  • }
  • }
  • //dévérouille si besoin est
  • if (SDL_MUSTLOCK(screen)) {
  • SDL_UnlockSurface(screen);
  • }
  • //rafraichie le panel
  • Refresh(false);
  • //endort l'application
  • wxMilliSleep(33);
  • }
  • void SDLPanel::createScreen() {
  • if (screen == NULL) {
  • int width, height;
  • GetSize(&width, &height);
  • screen = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height,
  • 24, 0, 0, 0, 0);
  • }
  • }
#include <iostream>  
 
#include <wx/wxprec.h>  
 
#ifdef __BORLANDC__  
    #pragma hdrstop  
#endif  
 
#ifndef WX_PRECOMP  
    #include <wx/wx.h>  
#endif  
 
 
#include <wx/dcbuffer.h>  
#include <wx/image.h>  
 
#include <SDL/SDL.h>  
 
enum {  
    ID_FRAME = 10000,  
    ID_PANEL,  
    IDM_FILE_EXIT,  
    IDM_HELP_ABOUT  
};  
 
//le panel qui contiendra le contexte SDL  
class SDLPanel : public wxPanel {  
    DECLARE_CLASS(SDLPanel)  
    DECLARE_EVENT_TABLE()  
 
private:  
    SDL_Surface *screen;  
 
    void onPaint(wxPaintEvent &event);  
    void onEraseBackground(wxEraseEvent &event){}  
    void onIdle(wxIdleEvent &event);  
    void createScreen();  
 
public:  
    SDLPanel(wxWindow *parent);  
    ~SDLPanel();  
};  
 
//la frame  
class SDLFrame : public wxFrame {  
    DECLARE_CLASS(SDLFrame)  
    DECLARE_EVENT_TABLE()  
 
private:  
    SDLPanel *panel;  
 
    void onFileExit(wxCommandEvent &event){ Close(); }  
    void onHelpAbout(wxCommandEvent &event);  
 
public:  
    SDLFrame();  
    SDLPanel &getPanel(){ return *panel; }  
};  
 
//L'application  
class SDLApp : public wxApp {  
    DECLARE_CLASS(SDLApp)  
 
private:  
    SDLFrame *frame;  
 
public:  
    bool OnInit();  
    int OnRun();  
    int OnExit();  
};  
 
IMPLEMENT_APP(SDLApp)  
 
IMPLEMENT_CLASS(SDLApp, wxApp)  
//===========================================  
IMPLEMENT_CLASS(SDLFrame, wxFrame)  
 
BEGIN_EVENT_TABLE(SDLFrame, wxFrame)  
    EVT_MENU(IDM_FILE_EXIT, SDLFrame::onFileExit)  
    EVT_MENU(IDM_HELP_ABOUT, SDLFrame::onHelpAbout)  
END_EVENT_TABLE()  
//===========================================  
IMPLEMENT_CLASS(SDLPanel, wxPanel)  
 
BEGIN_EVENT_TABLE(SDLPanel, wxPanel)  
    EVT_PAINT(SDLPanel::onPaint)  
    EVT_ERASE_BACKGROUND(SDLPanel::onEraseBackground)  
    EVT_IDLE(SDLPanel::onIdle)  
END_EVENT_TABLE()  
//===========================================  
bool SDLApp::OnInit() {  
    // crée la SDLFrame  
    frame = new SDLFrame;  
    frame->SetClientSize(640, 480);  
    frame->Centre();  
    frame->Show();  
 
    // Notre frame au premier plan  
    SetTopWindow(frame);  
 
    //l'initialisation devrais toujours marché.  
    return true;  
}  
 
int SDLApp::OnRun() {  
    //initialise SDL  
    if (SDL_Init(SDL_INIT_VIDEO) < 0) {  
        std::cerr << "Impossible d'initialiser SDL: " << SDL_GetError() << '\n';  
 
        return -1;  
    }  
 
    // Met ne place le mode vidéo sans crée de fenetre  
    SDL_SetVideoMode(0, 0, 0, SDL_SWSURFACE);  
 
    // démare la boucle principale  
    return wxApp::OnRun();  
}  
 
int SDLApp::OnExit() {  
    // quitte la SDL  
    SDL_Quit();  
 
    //retourne le code de sortie standard  
    return wxApp::OnExit();  
}  
 
SDLFrame::SDLFrame() {  
    // Crée la frame SDL  
    Create(NULL, ID_FRAME, wxT("Frame Title"), wxDefaultPosition,  
           wxDefaultSize, wxCAPTION | wxSYSTEM_MENU |  
           wxMINIMIZE_BOX | wxCLOSE_BOX);  
 
    // crée la bare de mnu  
    wxMenuBar *mb = new wxMenuBar;  
 
    // crée le menu file  
    wxMenu *fileMenu = new wxMenu;  
    fileMenu->Append(IDM_FILE_EXIT, wxT("E&xit"));  
 
    // add the file menu to the menu bar  
    mb->Append(fileMenu, wxT("&File"));  
 
    // crée le menu aide  
    wxMenu *helpMenu = new wxMenu;  
    helpMenu->Append(IDM_HELP_ABOUT, wxT("About"));  
 
    // ajoute le menu help a la bare de menus   
    mb->Append(helpMenu, wxT("&Help"));  
 
    //ajoute la bare de menu la frame  
    SetMenuBar(mb);  
 
    //crée le panel SDL.  
    panel = new SDLPanel(this);  
}  
 
void SDLFrame::onHelpAbout(wxCommandEvent &) {  
    wxMessageBox(wxT("wx-sdl snippet"),  
                 wxT("A propos du snippet WxSDL"), wxOK | wxICON_INFORMATION);  
}  
 
SDLPanel::SDLPanel(wxWindow *parent) : wxPanel(parent, ID_PANEL), screen(NULL) {  
    //definit la taille du panel  
    wxSize size(640, 480);  
 
    SetMinSize(size);  
    SetMaxSize(size);  
    SetSize(size);  
 
    //génère une évenement IDLE pour "démarer" la fenêtre.  
    wxIdleEvent event;  
    event.SetEventObject(this);  
    this->AddPendingEvent(event);  
}  
 
SDLPanel::~SDLPanel() {  
    if (screen != NULL) {  
        SDL_FreeSurface(screen);  
    }  
}  
 
void SDLPanel::onPaint(wxPaintEvent &) {  
    // on ne peut dessiner si l'écran n'existe pas  
    if (screen == NULL) {  
        return;  
    }  
 
    //vérouille l'écran si besoin est.  
    if (SDL_MUSTLOCK(screen)) {  
        if (SDL_LockSurface(screen) < 0) {  
            return;  
        }  
    }  
 
    // ccrée un bitmap a partir de l'écran  
    wxBitmap bmp(wxImage(screen->w, screen->h,  
                    static_cast<unsigned char *>(screen->pixels), true));  
 
    //devérouille l'écran  
    if (SDL_MUSTLOCK(screen)) {  
        SDL_UnlockSurface(screen);  
    }  
 
    //paint l'écran  
    wxBufferedPaintDC dc(this, bmp);  
}  
 
void SDLPanel::onIdle(wxIdleEvent &) {  
    // crée screen  
    createScreen();  
 
    //vérouille si besoin est   
    if (SDL_MUSTLOCK(screen)) {  
        if (SDL_LockSurface(screen) < 0) {  
            return;  
        }  
    }  
 
    //ne cherchez pas a comprendre , contentez vous de regarder.  
    int tick = SDL_GetTicks();  
 
    for (int y = 0; y < 480; y++) {  
        for (int x = 0; x < 640; x++) {  
            wxUint32 color = (y * y) + (x * x) + tick;  
            wxUint8 *pixels = static_cast<wxUint8 *>(screen->pixels) +  
                              (y * screen->pitch) +  
                              (x * screen->format->BytesPerPixel);  
 
            #if SDL_BYTEORDER == SDL_BIG_ENDIAN  
                pixels[0] = color & 0xFF;  
                pixels[1] = (color >> 8) & 0xFF;  
                pixels[2] = (color >> 16) & 0xFF;  
            #else  
                pixels[0] = (color >> 16) & 0xFF;  
                pixels[1] = (color >> 8) & 0xFF;  
                pixels[2] = color & 0xFF;  
            #endif  
        }  
    }  
 
    //dévérouille si besoin est   
    if (SDL_MUSTLOCK(screen)) {  
        SDL_UnlockSurface(screen);  
    }  
 
    //rafraichie le panel  
    Refresh(false);  
 
    //endort l'application  
    wxMilliSleep(33);  
}  
 
void SDLPanel::createScreen() {  
    if (screen == NULL) {  
        int width, height;  
        GetSize(&width, &height);  
 
        screen = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height,  
                                      24, 0, 0, 0, 0);  
    }  
} 

Conclusion

Ce code a été testé sous WinXP et sous Linux(distribution Fedora Core 5).
Compilé avec WxWidgets v 2.6.3 et SDL version 1.2.9
 

Commentaires et avis

signaler à un administrateur
Commentaire de luhtor le 19/04/2007 10:09:46

Intéressant, mais quelques questions:
- le pointeur "screen", il est définie dans quelle classe ?
- j'ai un doute: l'intéret de SDL c'est bien de fournir une fenetre a openGL non ?
- sinon: quel est l'intéret d'un panel SDL la ?
- quels avantages à wxGLCanvas ?

- Pourquoi t'es obligé de tracé dans OnIdle puisque c'est très lourd pour le processeur ? ce que tu évites avec un Sleep, mais pour une GUI, je trouve ca moyen de bloquer l'application.

signaler à un administrateur
Commentaire de Cyr62110 le 19/04/2007 12:15:34

La SDL est une librairie graphique 2D avec une gestion des controlles clavier, du son, des lecteurs, des joysticks. Par l'ajout de l'OpenGL, on permet juste la création de la 3D, OpenGL ne reconnaissant pas les controlles.
Sinon le code est interressant certe, mais je ne vois pas vraiment à quoi il pourrait servir. Pour moi la SDL suffit à elle seul, la SDL représente la programmation des jeu et souvant se fait en fullscreen donc pas vraiment besoin de fenetre.

signaler à un administrateur
Commentaire de davidbrcz1 le 19/04/2007 18:04:36

Et bien me sert de ce canvas pour des jeux.
De cette facon , je peux construire une GUI plus facilement.
J'utilise la SDL pour afficher les graphiques et WxWidgets pour les controles(bouttons...) car SDL ne gere pas cela en natif.

signaler à un administrateur
Commentaire de CChargy le 28/04/2007 10:03:20

Bonjour,
Ayant programmer la source : [TPE] MINI LOGICIEL DE MODIFICATION D'IMAGES AVEC SDL, j'aurais été content d'avoir vu cette source au paravent. Dans cette source j'ai recréer des boutons et des menus avec la SDL seulement...

Mais bon ce qui est fait est fait...
Merci pour cette source qui sera utile à plus d'un
Colin CHARGY

signaler à un administrateur
Commentaire de davidbrcz1 le 28/04/2007 10:39:56

Cela a du etre dur , car il a fallut blitter des images carré, et verifier a chaque clique si la souris etait dans le boutton.
Et faire ceci pour tout les bouttons. Arf.

signaler à un administrateur
Commentaire de CChargy le 29/04/2007 15:36:06

Et oui,
Et en plus, j'ai plusieurs "espaces de travail" dans ma fenêtre (des fenêtre dans la fenêtre). Pas facile, mais sa à bien bluffer le jury je crois donc bonne note en perspective pour le bac (et c'est le but).

Colin CHARGY

signaler à un administrateur
Commentaire de mplokijunhybgtvfrcdexsz le 22/07/2007 15:45:05

Mouais. Ca aurait été pas mal de citer l'auteur et la page web originale de la source. Parce que là c'est carrément du plagiat.

En plus le minimum ça aurait etre de relire le code pour enlever les erreurs qui s'y sont glissées par exemple ligne 140  fileMenu->Append(IDM_FILE_EXIT, wxT("E&xit"));  
Fin bon je vois que le seul truc modifié ça a été le copyright présent à cette ligne: void SDLFrame::onHelpAbout(wxCommandEvent &)

Voilà la page web originale:
http://code.technoplaza.net/wx-sdl/part1/

signaler à un administrateur
Commentaire de davidbrcz1 le 23/07/2007 14:12:10

J qurqis bien citer lq pqge originale si je m em etais souvenue.
De plus , j ai quelque peu reorganise le code pour eliminer les warning/erreus du code originale.  

Merci pour l erreur je ne l avais pas vue.

signaler à un administrateur
Commentaire de bZb le 13/02/2008 10:29:50 8/10

J'ai dû remplacer :
SDL_SetVideoMode(0, 0, 0, SDL_SWSURFACE);
par :
SDL_SetVideoMode(-1, -1, 0, SDL_SWSURFACE);
sinon il m'ouvrait une fenêtre Wx et une fenêtre SDL.

signaler à un administrateur
Commentaire de darwog le 05/05/2008 21:52:05

Comment vous le faites marcher ? :
Chez moi ca compile, mais le résultat est une appli qui met le proc à 100% et n'affiche rien (l'intérieur de la frame ne se raffraichit pas, comme un bureau windoz planté).
[URL=http://img354.imageshack.us/my.php?image=temprb6.jpg][IMG]http://img354.imageshack.us/img354/372/temprb6.th.jpg[/IMG][/URL]

signaler à un administrateur
Commentaire de darwog le 05/05/2008 22:04:14

[edit] : en fait, ca faisait comme dit ci-dessus avec la version originale(l'autre site), mais avec cette version ca passe. Merci :)
Sinon, idem que BZB pour le VideoMode.

signaler à un administrateur
Commentaire de CChargy le 08/05/2008 11:13:39

Le problème du SDL_SetVideoMode, vient du fait que depuis une certaine version de la SDL, je sais plus laquelle, SDL_SetVideoMode(0, 0, 0, SDL_SWSURFACE); permet d'ouvrir une fenêtre sur tout l'écran alors qu'avant cette ligne n'ouvait pas de fenêtre SDL mais en créait le contexte ...

Voila
Bonne prog'
Colin CHARGY

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

[SDL/WxWidgets] Events [ par djardjar ] Bonjour ! Comment on gere les &#233;venements de la SDL dans une fen&#234;tre WxWidgets ?En fait, je voudrais placer ceci dans une fen&#234;tre WxWid [SDL] Obtenir la couleur d'un pixel dans une SDL_Surface [ par Rouliann ] Bonjour tout le monde!Voil&#224; je cherche une fonction capable de lire la couleur d'un pixel dans une SDL_Surface, j'ai cherch&#233; dans SDL_video. SDL en statique [ par shenron666 ] Bonjour, je ne suis pas particuli&#232;rement fan des librairies "externes" (.dll) mais SDL &#233;tant une bonne librairie en open source j'aimerai sa Devpack wxWidgets 2.5.5 [ par fredcl ] Bonjour &#224; tous, Pour ceux que cel&#224; interresse, vous trouverez sur mon site http://cfred.free.fr les DevPack de wxWidgets 2.5.5 pour Dev-Cp SDL : linker error [ par bigben89 ] Ca fais &#224; peine quelques mois que j'fais de la programmation (en C) et j'aimerais faire un peu de 2d et de 3d avec SDL. Je regarde des tutoriaux SDL _ttf [ par RLBDC ] Bonjour &#224; tous !Voil&#224; , je d&#233;bute en c++ .Je souhaite cr&#233;er un "menu" de jeu , en mode grafique , &#224; l'aide de la SDL .Donc j' WxWidgets : wxSplitterWindow et Sizers [ par nacedo23 ] Salut! Je d&#233;veloppe avec wxDevcpp.Voila mon probleme : Je veux couper ma fenetre en 2 avec un splitterwindow pour pouvoir redimensionner. A gauc Devpack wxWidgets 2.6.0 pour Dev-Cpp 4.9.9.2 [ par fredcl ] Bonjour &#224; tous, Pour ceux que cel&#224; interresse, WxWidgets vient de sortir (21/04/2005) en version stable 2.6.0. J'ai donc mis &#224; votr Lecture de vidéos avec SDL [ par licorna ] &nbsp;&nbsp;&nbsp;&nbsp; Bonjour &#224; tous, voil&#224; plusieurs semaines que je tente de d&#233;coder des vid&#233;os afin de les afficher &#224; l mysql devcpp 4.9.9.2 wxwidgets [ par nomad56 ] nomad56 ,salut je dois faire une gestion en c++ avec mysql devcpp 4.9.9.2 wxwidgets je suis tout juste d&#233;butant en c++ (en fait je connais un peu


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.