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 !

[WIN32][C][DEV-C++] GRAPH TRANSPARENT DEBIT RESEAU


Information sur la source

Catégorie :Réseaux & Internet Classé sous : souris, graphique, transparent, curseur, reseau Niveau : Initié Date de création : 20/04/2008 Date de mise à jour : 20/04/2008 15:49:52 Vu / téléchargé: 3 138 / 188

Note :
Aucune note

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


Description

Cliquez pour voir la capture en taille normale
Voila une petite source qui affiche un graphique transparent du débit réseau (moyenne sur 1/2 minute)

  Objectifs:
  ----------
            * modification du curseur
            * déplacement d'une fenêtre par la souris
            * dessin de graphiques
            * récupération des octets téléchargés et envoyés
            * transparence de fenêtre


            click gauche = déplacement
            click droit = quitter
            
            Attention modifier "ncard" pour spécifier votre carte réseau si ce n'est pas la 1ère


comme d'habitude modifier renommer le fichier ".ex" en ".exe",

attention j'ai sélectionné un débit de 800ko/128ko et la première carte réseau pour une utilisation autre il faudra modifier ces variables.

enjoy ;)

 

Source

  • //------------------------------------------------------------------------------
  • // Projet Graph : mesure du débit entrant/sortant (moyennes)
  • // Auteur : Hanteville Nicolas
  • // Fichier : proc.c
  • // Version : 0.1
  • // Date de modification : 20/04/2008
  • // Description : code pour exemple
  • // Environnement : compatibilité DEVCPP / VISUAL C++ / BORLAND C++ 5.x
  • //------------------------------------------------------------------------------
  • /*
  • Objectifs:
  • ----------
  • * modification du curseur
  • * déplacement d'une fenêtre par la souris
  • * dessin de graphiques
  • * récupération des octets téléchargés et envoyés
  • * transparence de fenêtre
  • click gauche = déplacement
  • click droit = quitter
  • Attention modifier "ncard" pour spécifier votre carte réseau si ce n'est pas la 1ère
  • */
  • //------------------------------------------------------------------------------
  • #define _WIN32_WINNT 0x0500
  • #include <windows.h>
  • #include <iphlpapi.h> //-liphlpapi
  • #pragma comment(lib, "iphlpapi.lib")
  • //------------------------------------------------------------------------------
  • //débit réseau en ko entrant/sortant
  • #define debit_dw 800 // ko
  • #define debit_up 128 // ko
  • //tailles de graph + fenêtre
  • #define x_refresh 0
  • #define y_refresh 0
  • #define xx_refresh 264
  • #define yy_refresh 95
  • #define x_cadre_i 150
  • #define y_cadre_m 46
  • //bordure entre les cadres + espacement internes
  • #define border 5
  • #define espace 3
  • //sélection de la carte réseau
  • #define ncard 0
  • //nombre de valeurs /graphiques
  • #define NB_Item 28
  • #define szClassName "WindowsApp"
  • BOOL start;
  • RECT rect;
  • float items[NB_Item];
  • float itemo[NB_Item];
  • HWND hwnd;
  • //------------------------------------------------------------------------------
  • //timer de mise à jour du schéma + down + upload
  • DWORD WINAPI timer(LPVOID lParam)
  • {
  • unsigned short i;
  • PMIB_IFTABLE buffer;
  • ULONG size=0;
  • //instance pour récupération de la structure
  • GetIfTable (NULL, &size, TRUE);
  • buffer = (PMIB_IFTABLE)GlobalAlloc(GMEM_FIXED, size);
  • //lecture actuel + init des valeurs
  • GetIfTable(buffer, &size, FALSE);
  • int in = buffer->table[ncard].dwInOctets;
  • int out = buffer->table[ncard].dwOutOctets;
  • //tant que l'on ne quitte pas on continue
  • while(start)
  • {
  • _sleep(1000);//toutes les secondes maj
  • //rotation des valeurs
  • for (i=0;i<NB_Item-1;i++)
  • {
  • items[i]=items[i+1];
  • itemo[i]=itemo[i+1];
  • }
  • //maj des valeurs
  • GetIfTable(buffer, &size, FALSE);
  • //copie du débit en ko
  • items[NB_Item-1]=(buffer->table[ncard].dwInOctets-in)/1024;
  • itemo[NB_Item-1]=(buffer->table[ncard].dwOutOctets-out)/1024;
  • //totaux
  • in = buffer->table[ncard].dwInOctets;
  • out = buffer->table[ncard].dwOutOctets;
  • //emplacement de refresh de la forme
  • /*rect.left = x_refresh;
  • rect.top = y_refresh;
  • rect.right = xx_refresh;
  • rect.bottom = yy_refresh;*/
  • //toute le forme ici
  • InvalidateRect(hwnd,0/*&rect*/,FALSE);
  • UpdateWindow(hwnd);
  • }
  • GlobalFree(buffer);
  • }
  • //------------------------------------------------------------------------------
  • /* This function is called by the Windows function DispatchMessage() */
  • POINT pt;
  • int mouseX,mouseY;
  • BOOL bCapture;
  • LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  • {
  • switch (message)
  • {
  • //gestion du déplacement de la fenêtre
  • case WM_LBUTTONDOWN:
  • mouseX = LOWORD(lParam);
  • mouseY = HIWORD(lParam);
  • SetCapture(hwnd);
  • bCapture = 1;
  • return 0;
  • break;
  • case WM_LBUTTONUP:
  • if(GetCapture() == hwnd)
  • {
  • ReleaseCapture();
  • bCapture = 0;
  • GetCursorPos(&pt);
  • SetWindowPos(hwnd, 0, pt.x - mouseX, pt.y - mouseY, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
  • }
  • break;
  • case WM_MOUSEMOVE:
  • if(bCapture)
  • {
  • pt.x = LOWORD(lParam);
  • pt.y = HIWORD(lParam);
  • ClientToScreen(hwnd, &pt);
  • SetCursor( LoadCursor( NULL , IDC_SIZEALL ));//icone de déplacement
  • SetWindowPos(hwnd, 0, pt.x - mouseX, pt.y - mouseY, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
  • }
  • break;
  • //----
  • //on quit par un click droit
  • case WM_RBUTTONDOWN:
  • start=0;
  • PostQuitMessage (0);
  • break;
  • //dessin du graphique + fenêtre
  • case WM_PAINT:
  • {
  • PAINTSTRUCT ps;
  • HDC hdc=BeginPaint(hwnd,&ps);
  • HBRUSH Hb1 = CreateSolidBrush(RGB(0, 150, 0)); //vert
  • HBRUSH Hb2 = CreateSolidBrush(RGB(150, 0, 0)); //rouge
  • int a;
  • unsigned int taillephrag,nbnb;
  • unsigned short val,val2;
  • float moy=0,moyout=0;
  • //rect de contour global
  • Rectangle(hdc,0,0,xx_refresh,yy_refresh);
  • //les 2 autres rectangles
  • Rectangle(hdc,border,border,x_cadre_i,y_cadre_m);
  • Rectangle(hdc,border,y_cadre_m+espace,x_cadre_i,yy_refresh-border);
  • for (a=0;a<NB_Item;a++)
  • {
  • moy+=items[a];
  • moyout+=itemo[a];
  • //position de la barre d'état
  • val2 = 8+a*(5);
  • //down
  • val =y_cadre_m-(y_cadre_m-8)*items[a]/debit_dw;
  • if (val<8)val=8;
  • SelectObject(hdc,Hb1);
  • Rectangle(hdc,val2,val,val2+4,y_cadre_m);
  • //up
  • val =yy_refresh-border-(y_cadre_m-8)*itemo[a]/debit_up;
  • if (val<52)val=52;
  • SelectObject(hdc,Hb2);
  • Rectangle(hdc,val2,val,val2+4,yy_refresh-5);
  • }
  • moy = moy/NB_Item;
  • moyout= moyout/NB_Item;
  • //on ajoute les écritures max et min
  • char tmpMoy[256];
  • //min
  • rect.top = yy_refresh-20;
  • rect.bottom = yy_refresh-border;
  • rect.left = x_cadre_i+espace;
  • rect.right = xx_refresh-border;
  • FillRect(hdc, &rect, GetSysColorBrush(COLOR_WINDOW));
  • SetTextColor(hdc, GetSysColor(COLOR_MENUTEXT));
  • //1000 car au dessus de 999.99
  • if (moyout<1000)sprintf(tmpMoy,"up:%5.2fKo/s",moyout);
  • else if (moyout<1024000)sprintf(tmpMoy,"up:%5.2fMo/s",moyout/1024.0);
  • else sprintf(tmpMoy,"up:%5.2fGo/s",moyout/1048576.0);
  • DrawText(hdc,tmpMoy,strlen(tmpMoy), &rect, DT_VCENTER);
  • //max
  • rect.top = border;
  • rect.bottom = (y_cadre_m+espace)*2;
  • if (moyout<1000)sprintf(tmpMoy,"dw:%5.2fKo/s",moy);
  • else if (moyout<1024000)sprintf(tmpMoy,"dw:%5.2fMo/s",moy/1024.0);
  • else sprintf(tmpMoy,"dw:%5.2fGo/s",moy/1048576.0);
  • DrawText(hdc,tmpMoy,strlen(tmpMoy), &rect, DT_VCENTER);
  • //libération
  • DeleteObject(Hb1);
  • DeleteObject(Hb2);
  • EndPaint(hwnd,&ps);
  • }
  • break;
  • case WM_DESTROY:
  • start=0;
  • PostQuitMessage (0);
  • break;
  • default:
  • return DefWindowProc (hwnd, message, wParam, lParam);
  • }
  • return 0;
  • }
  • //------------------------------------------------------------------------------
  • int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil)
  • {
  • MSG messages;
  • WNDCLASSEX wincl;
  • wincl.hInstance = hThisInstance;
  • wincl.lpszClassName = szClassName;
  • wincl.lpfnWndProc = WindowProcedure;
  • wincl.style = CS_DBLCLKS;
  • wincl.cbSize = sizeof (WNDCLASSEX);
  • wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
  • wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
  • wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
  • wincl.lpszMenuName = NULL;
  • wincl.cbClsExtra = 0;
  • wincl.cbWndExtra = 0;
  • wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
  • if (!RegisterClassEx (&wincl))
  • return 0;
  • //fenêtre sans icone dans la barre des tâche
  • hwnd = CreateWindowEx (WS_EX_LAYERED|WS_EX_NOACTIVATE|WS_EX_TOPMOST,szClassName,"Windows App",WS_POPUP,900,200,xx_refresh,yy_refresh,HWND_DESKTOP,NULL,hThisInstance,NULL);
  • //on affiche la fenêtre
  • ShowWindow (hwnd, 1);
  • //définition de l'état de transparence (0-255), 255= opaque
  • SetLayeredWindowAttributes(hwnd,0,150,0x02);
  • //timer maj
  • start=1;
  • CreateThread(NULL,0,timer,0,0,0);
  • //définision de la région a afficher ici non utile car = fenêtre
  • //HRGN region = CreateRectRgn(x_refresh,y_refresh,xx_refresh,yy_refresh);
  • //SetWindowRgn(hwnd,region,1);
  • bCapture=0;
  • while (GetMessage (&messages, NULL, 0, 0))
  • {
  • TranslateMessage(&messages);
  • DispatchMessage(&messages);
  • }
  • return messages.wParam;
  • }
//------------------------------------------------------------------------------
// Projet Graph         : mesure du débit entrant/sortant (moyennes)
// Auteur               : Hanteville Nicolas
// Fichier              : proc.c
// Version              : 0.1
// Date de modification : 20/04/2008
// Description          : code pour exemple
// Environnement        : compatibilité DEVCPP / VISUAL C++ / BORLAND C++ 5.x
//------------------------------------------------------------------------------
/*
  Objectifs:
  ----------
            * modification du curseur
            * déplacement d'une fenêtre par la souris
            * dessin de graphiques
            * récupération des octets téléchargés et envoyés
            * transparence de fenêtre


            click gauche = déplacement
            click droit = quitter
            
            Attention modifier "ncard" pour spécifier votre carte réseau si ce n'est pas la 1ère


*/
//------------------------------------------------------------------------------
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <iphlpapi.h> //-liphlpapi

#pragma comment(lib, "iphlpapi.lib") 
//------------------------------------------------------------------------------

//débit réseau en ko entrant/sortant
#define debit_dw 800 // ko
#define debit_up 128 // ko

//tailles de graph + fenêtre
#define x_refresh    0
#define y_refresh    0
#define xx_refresh   264
#define yy_refresh   95

#define x_cadre_i    150 
#define y_cadre_m    46

//bordure entre les cadres + espacement internes
#define border       5
#define espace       3

//sélection de la carte réseau
#define ncard       0   

//nombre de valeurs /graphiques
#define NB_Item     28

#define  szClassName "WindowsApp"


BOOL start;
RECT rect;
float items[NB_Item];
float itemo[NB_Item];
HWND hwnd;

//------------------------------------------------------------------------------
//timer de mise à jour du schéma + down + upload
DWORD  WINAPI timer(LPVOID lParam)
{
  unsigned short i;
  PMIB_IFTABLE buffer;
  ULONG size=0;

  //instance pour récupération de la structure
  GetIfTable (NULL, &size, TRUE);
  buffer = (PMIB_IFTABLE)GlobalAlloc(GMEM_FIXED, size);
  
  //lecture actuel + init des valeurs
  GetIfTable(buffer, &size, FALSE);
  int in = buffer->table[ncard].dwInOctets;
  int out = buffer->table[ncard].dwOutOctets;
  
  //tant que l'on ne quitte pas on continue
  while(start)
  { 
      _sleep(1000);//toutes les secondes maj
      
     //rotation des valeurs 
     for (i=0;i<NB_Item-1;i++)
     {
       items[i]=items[i+1];
       itemo[i]=itemo[i+1];
     } 

     //maj des valeurs
     GetIfTable(buffer, &size, FALSE);
     
     //copie du débit en ko
     items[NB_Item-1]=(buffer->table[ncard].dwInOctets-in)/1024;
     itemo[NB_Item-1]=(buffer->table[ncard].dwOutOctets-out)/1024;
     
     //totaux
     in = buffer->table[ncard].dwInOctets;
     out = buffer->table[ncard].dwOutOctets;
     
     //emplacement de refresh de la forme
     /*rect.left   = x_refresh;
     rect.top    = y_refresh;
     rect.right  = xx_refresh;
     rect.bottom = yy_refresh;*/

     //toute le forme ici
     InvalidateRect(hwnd,0/*&rect*/,FALSE);
     UpdateWindow(hwnd); 
  }
  GlobalFree(buffer);  
}

//------------------------------------------------------------------------------
/*  This function is called by the Windows function DispatchMessage()  */

POINT pt;
int mouseX,mouseY;
BOOL bCapture;

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                 
    {
  //gestion du déplacement de la fenêtre
        case WM_LBUTTONDOWN:
          mouseX = LOWORD(lParam);
          mouseY = HIWORD(lParam);
          SetCapture(hwnd);
          bCapture = 1;
          return 0;
        break;
        case WM_LBUTTONUP:
          if(GetCapture() == hwnd)
          {
            ReleaseCapture();
            bCapture = 0;
            GetCursorPos(&pt);
            SetWindowPos(hwnd, 0, pt.x - mouseX, pt.y - mouseY, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
          }
        break;
        case WM_MOUSEMOVE:
          if(bCapture)
          {
            pt.x = LOWORD(lParam);
            pt.y = HIWORD(lParam);
            ClientToScreen(hwnd, &pt);
            SetCursor( LoadCursor( NULL , IDC_SIZEALL ));//icone de déplacement
            SetWindowPos(hwnd, 0, pt.x - mouseX, pt.y - mouseY, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
          }
        break;
  //----
        
        //on quit par un click droit
        case WM_RBUTTONDOWN:
             start=0;
             PostQuitMessage (0);
        break;        
        
        //dessin du graphique + fenêtre
        case WM_PAINT:
        {
             PAINTSTRUCT ps;
             HDC hdc=BeginPaint(hwnd,&ps);
             
             HBRUSH Hb1 = CreateSolidBrush(RGB(0, 150, 0)); //vert
             HBRUSH Hb2 = CreateSolidBrush(RGB(150, 0, 0)); //rouge
             int a;
             unsigned int taillephrag,nbnb;
             unsigned short val,val2;
             float moy=0,moyout=0;     
             
             //rect de contour global
             Rectangle(hdc,0,0,xx_refresh,yy_refresh);
             //les 2 autres rectangles
             Rectangle(hdc,border,border,x_cadre_i,y_cadre_m);
             Rectangle(hdc,border,y_cadre_m+espace,x_cadre_i,yy_refresh-border);

             for (a=0;a<NB_Item;a++)
             {
               moy+=items[a];
               moyout+=itemo[a];
               
               //position de la barre d'état
               val2 = 8+a*(5);
               
               //down
               val =y_cadre_m-(y_cadre_m-8)*items[a]/debit_dw;
               if (val<8)val=8;
               SelectObject(hdc,Hb1);
               Rectangle(hdc,val2,val,val2+4,y_cadre_m);
               
               //up
               val =yy_refresh-border-(y_cadre_m-8)*itemo[a]/debit_up;
               if (val<52)val=52;
               SelectObject(hdc,Hb2);
               Rectangle(hdc,val2,val,val2+4,yy_refresh-5);
             }
             
             moy = moy/NB_Item;
             moyout= moyout/NB_Item;
             
             //on ajoute les écritures max et min
             char tmpMoy[256];
             
             //min
             rect.top = yy_refresh-20;
             rect.bottom = yy_refresh-border;
             rect.left = x_cadre_i+espace;
             rect.right = xx_refresh-border;
             FillRect(hdc, &rect, GetSysColorBrush(COLOR_WINDOW));
             SetTextColor(hdc, GetSysColor(COLOR_MENUTEXT));
             //1000 car au dessus de 999.99
             if (moyout<1000)sprintf(tmpMoy,"up:%5.2fKo/s",moyout);
             else if (moyout<1024000)sprintf(tmpMoy,"up:%5.2fMo/s",moyout/1024.0);
             else sprintf(tmpMoy,"up:%5.2fGo/s",moyout/1048576.0);
             DrawText(hdc,tmpMoy,strlen(tmpMoy), &rect, DT_VCENTER);

             //max
             rect.top = border;
             rect.bottom = (y_cadre_m+espace)*2;               
             if (moyout<1000)sprintf(tmpMoy,"dw:%5.2fKo/s",moy);
             else if (moyout<1024000)sprintf(tmpMoy,"dw:%5.2fMo/s",moy/1024.0);
             else sprintf(tmpMoy,"dw:%5.2fGo/s",moy/1048576.0);
             DrawText(hdc,tmpMoy,strlen(tmpMoy), &rect, DT_VCENTER);             

             //libération
             DeleteObject(Hb1);
             DeleteObject(Hb2);
             EndPaint(hwnd,&ps);
        }
        break;
        case WM_DESTROY:
            start=0;
            PostQuitMessage (0);      
            break;
        default:                
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

//------------------------------------------------------------------------------
int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil)
{
    MSG messages;           
    WNDCLASSEX wincl;    

    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;     
    wincl.style = CS_DBLCLKS;                 
    wincl.cbSize = sizeof (WNDCLASSEX);
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;               
    wincl.cbClsExtra = 0;                     
    wincl.cbWndExtra = 0;                    
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    if (!RegisterClassEx (&wincl))
        return 0;

//fenêtre sans icone dans la barre des tâche  
    hwnd = CreateWindowEx (WS_EX_LAYERED|WS_EX_NOACTIVATE|WS_EX_TOPMOST,szClassName,"Windows App",WS_POPUP,900,200,xx_refresh,yy_refresh,HWND_DESKTOP,NULL,hThisInstance,NULL);
    
    //on affiche la fenêtre
    ShowWindow (hwnd, 1);
    
    //définition de l'état de transparence (0-255), 255= opaque
    SetLayeredWindowAttributes(hwnd,0,150,0x02); 
    
    //timer maj
    start=1;
    CreateThread(NULL,0,timer,0,0,0);

    //définision de la région a afficher ici non utile car = fenêtre
    //HRGN region = CreateRectRgn(x_refresh,y_refresh,xx_refresh,yy_refresh);
    //SetWindowRgn(hwnd,region,1);

    bCapture=0;

    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }

    return messages.wParam;
}

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

20 avril 2008 15:49:54 :
- new name

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

obtenir la souris dans un prog console en C et C++ [ par Stepharcher ] Bonjour !J'aurais besoin de savoir comment récupérer la souris dans un programme console en C et en C++. J'aimerais aussi savoir si on peux diriger le Changer le curseur de souris... [BCB] :)) [ par CodeNeo ] Hello tout le mondeJe sais que c'est idiot comme question mais bon...J'ai commencer un casse brique en DirectX et j'ai créer un curseur de souris...Co Changer le curseur souris par une image [ par vodkapomme43 ] Bonjour,Je d&#233;veloppe un petit doom en openGl (j'utilise&nbsp;visual c++) et j'aimerais juste savoir comment changer le curseur de la souris par u probleme de souris en plein ecran [ par Adeon ] Adeon j'ai un probleme, des que je passe mes jeux en plein ecran j'ai le curseur de la souris qui est creer et ca me gache mes b curseur de souris [ par equimose ] salut vous tousje sui toujours en sdi avec VC++et je voudrai changer mon curseur de souris ( que j'ai creer moi meme) lorsque je click sur mon menuCom click souris [ par c2millet ] Bonjours a tous,Je voudrais positionner mon curseur au milieu de ma fenetre et générer un click .je c qu'il faut utiliser la fonction SetCursorPos pou Curseur de la souris avec opengl/glut [ par mondrone ] comment faire pour rendre la souris invisible avec opengl et ou glut ? J'ai deja vu qu'on peut changer le curseur, mais pas qu'on peut soit mettre une Curseur de la souris... [ par dbiare ] Bonjour, Je travail sous Visual C++6. Dans mon application, j’ai une boite de dialogue et parallèlement j’ai un ‘Thread’ qui tourne en tache de fond. Tablette graphique: WACOM desactive la saisie du curseur [ par bordeaux ] Bonjour,je ne pense pas que ce message obtiendra des reponses, mais je le post tout de meme.Il concerne un programme que j'ai developpe et qui permet curseur de souris [ par equimose ] --//Equimose//--Salut à tous !   J'ai besoin de savoir programmer un curseur de souris qui change lorsque je clique sur chaque bouton de ma boite dial


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



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,343 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é.