Accueil > > > CLASSE GRAPH: GESTION DES GRAPHIQUES DANS LES APPLICATIONS WIN32
CLASSE GRAPH: GESTION DES GRAPHIQUES DANS LES APPLICATIONS WIN32
Information sur la source
Description
Cette classe permet de gérer très facilement l'ajout de graphique dans vos applications. Elle utilise les API win 32 pure. L'interface homme machine a été pensée pour être le plus simple intuitif et le plus simple possible. -Un clic gauche déplacé permet de déplacer la fenêtre de visualisation. -Un clic droit permet de faire un zoom optimal sur les courbes du graphique. -un clic droit déplacé permet d'adapter la fenêtre de visualisation au rectangle créer. -La molette de la souris permet de faire un zoom ou un dé zoom sur les données. -Un clic gauche sur une courbe permet de la sélectionner. La courbe sélectionnée devient la courbe courante. -Lorsque l'utilisateur appuie le bouton supprimé lorsqu'une courbe est sélectionnée, cette courbe est supprimée. -La touche Echap permet de désélectionner la courbe. -Le mouvement de la souris sur les données permet de placer le curseur sur la courbe courante et de visualiser les coordonnées. -On peut ajouter un titre et une légende.
Source
- //**************************************************************************************
- //Vincent Morard
- //Graph : Classe pour la gestion des graphiques dans une application Win32
- //23/05/2009
- //**************************************************************************************
- #include <windows.h>
- #include <math.h>
- #include "Plot.h"
- HINSTANCE hInst;
-
-
- LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- static int cx,cy;
- static Plot *P1,*P2,*P3;
- switch (message)
- {
- case WM_CREATE:
- double X[1000],Y[1000],Y2[1000],Y3[1000],Y4[1000],Y5[1000],Y6[1000],Y7[1000];
-
- Plot::Initialize(hInst);
- P1 = new Plot();
- P2 = new Plot();
- P3 = new Plot();
-
- P1->CreatePlot(0,WS_CHILD|WS_VISIBLE,20,20,100,200,hwnd);
- P2->CreatePlot(0,WS_CHILD|WS_VISIBLE|WS_DLGFRAME,300,20,50,200,hwnd);
- P3->CreatePlot(0,WS_CHILD|WS_VISIBLE,20,20,100,200,hwnd);
-
- //Couleur des graphs
- P1->SetBkColor(RGB(112,156,227));
- P1->SetGraphColor(RGB(204,219,244));
-
- P2->SetBkColor(RGB(95,195,34));
- P2->SetGraphColor(RGB(219,251,196));
-
- P3->SetBkColor(RGB(193,56,41));
- P3->SetGraphColor(RGB(251,218,196));
-
- //Création des courbes
- srand(GetTickCount());
- X[0]=0;Y[0]=0;Y2[0]=0;Y3[0]=0;Y4[0]=0,Y5[0]=0,Y6[0]=0,Y7[0]=0;
-
- for(int i=1;i<1000;i++){
- X[i]=i;
- Y[i]=Y[i-1]+(rand()%2 == 0 ? -1:1);
- Y2[i]=20*sin((double)i/20);
- Y3[i]=(i/30-2)*10;
- Y4[i]=(sin((double)i/4)*sqrt((double)i));
- Y5[i]=(sin((double)i/4)*sqrt((double)i*3));
- Y6[i]=(sin((double)i/4)*sqrt((double)i*6));
- Y7[i]=(sin((double)i/4)*sqrt((double)i*9));
- }
-
- //Ajout des courbes dans les graph
- P1->Add(X,Y,100 ,RGB(0,200,200) ,PLOT_TYPE_CROSS_AND_LINE);
-
- P2->Add(X,Y,1000 ,RGB(200,0,0) ,PLOT_TYPE_LINE);
- P2->Add(X,Y2,1000,RGB(0,200,0) ,PLOT_TYPE_CROSS_AND_LINE);
- P2->Add(X,Y3,300 ,RGB(255,128,64),PLOT_TYPE_CROSS);
-
- P3->Add(X,Y4,100 ,RGB(100,0,0) ,PLOT_TYPE_CROSS);
- P3->Add(X,Y5,100 ,RGB(200,0,0) ,PLOT_TYPE_CROSS);
- P3->Add(X,Y6,100 ,RGB(255,126,0) ,PLOT_TYPE_CROSS);
- P3->Add(X,Y7,100 ,RGB(255,189,20) ,PLOT_TYPE_CROSS);
-
-
- P1->AddTitle("Y[i-1] + (rand()%2 == 0 ? -1:1)");
-
- P3->AddTitle("Sinus pondéré avec une racine carré");
- P3->AddLegend();
- P3->AddLegend(0,"Sin{w/4} * sqrt(w)");
- P3->AddLegend(1,"Sin{w/4} * sqrt(w*3)");
- P3->AddLegend(2,"Sin{w/4} * sqrt(w*6)");
- P3->AddLegend(3,"Sin{w/4} * sqrt(w*9)");
- return 0 ;
-
-
- case WM_SIZE:
- cx = LOWORD (lParam) ;
- cy = HIWORD (lParam) ;
- MoveWindow(P1->GetHWND(),20,20,cx/2-20,cy/2-20,TRUE);
- MoveWindow(P2->GetHWND(),cx/2+20,20,cx/2-40,cy/2-20,TRUE);
- MoveWindow(P3->GetHWND(),20,cy/2+20,cx-40,cy/2-20,TRUE);
- break;
-
- case WM_DESTROY:
- PostQuitMessage (0) ;
- return 0 ;
- }
- return DefWindowProc (hwnd, message, wParam, lParam) ;
- }
-
-
- int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE ,PSTR szCmdLine, int iCmdShow)
- {
- static char szAppName[] = "Graph" ;
- HWND hwnd ;
- MSG msg ;
- WNDCLASS wndclass ;
-
- hInst = hInstance;
-
- wndclass.style = CS_HREDRAW | CS_VREDRAW ;
- wndclass.lpfnWndProc = WndProc ;
- wndclass.cbClsExtra = 0 ;
- wndclass.cbWndExtra = 0 ;
- wndclass.hInstance = hInstance ;
- wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
- wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
- wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
- wndclass.lpszMenuName = NULL ;
- wndclass.lpszClassName = szAppName ;
-
- if (!RegisterClass (&wndclass)){
- MessageBox (NULL, "This program requires Windows NT!",szAppName, MB_ICONERROR) ;
- return 0 ;
- }
-
- hwnd = CreateWindow (szAppName, "Graphiques",
- WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN,
- CW_USEDEFAULT, CW_USEDEFAULT,
- CW_USEDEFAULT, CW_USEDEFAULT,
- NULL, NULL, hInstance, NULL) ;
-
- ShowWindow (hwnd, iCmdShow) ;
- UpdateWindow (hwnd) ;
-
- while (GetMessage (&msg, NULL, 0, 0))
- {
- TranslateMessage (&msg) ;
- DispatchMessage (&msg) ;
- }
- return msg.wParam ;
- }
//**************************************************************************************
//Vincent Morard
//Graph : Classe pour la gestion des graphiques dans une application Win32
//23/05/2009
//**************************************************************************************
#include <windows.h>
#include <math.h>
#include "Plot.h"
HINSTANCE hInst;
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static int cx,cy;
static Plot *P1,*P2,*P3;
switch (message)
{
case WM_CREATE:
double X[1000],Y[1000],Y2[1000],Y3[1000],Y4[1000],Y5[1000],Y6[1000],Y7[1000];
Plot::Initialize(hInst);
P1 = new Plot();
P2 = new Plot();
P3 = new Plot();
P1->CreatePlot(0,WS_CHILD|WS_VISIBLE,20,20,100,200,hwnd);
P2->CreatePlot(0,WS_CHILD|WS_VISIBLE|WS_DLGFRAME,300,20,50,200,hwnd);
P3->CreatePlot(0,WS_CHILD|WS_VISIBLE,20,20,100,200,hwnd);
//Couleur des graphs
P1->SetBkColor(RGB(112,156,227));
P1->SetGraphColor(RGB(204,219,244));
P2->SetBkColor(RGB(95,195,34));
P2->SetGraphColor(RGB(219,251,196));
P3->SetBkColor(RGB(193,56,41));
P3->SetGraphColor(RGB(251,218,196));
//Création des courbes
srand(GetTickCount());
X[0]=0;Y[0]=0;Y2[0]=0;Y3[0]=0;Y4[0]=0,Y5[0]=0,Y6[0]=0,Y7[0]=0;
for(int i=1;i<1000;i++){
X[i]=i;
Y[i]=Y[i-1]+(rand()%2 == 0 ? -1:1);
Y2[i]=20*sin((double)i/20);
Y3[i]=(i/30-2)*10;
Y4[i]=(sin((double)i/4)*sqrt((double)i));
Y5[i]=(sin((double)i/4)*sqrt((double)i*3));
Y6[i]=(sin((double)i/4)*sqrt((double)i*6));
Y7[i]=(sin((double)i/4)*sqrt((double)i*9));
}
//Ajout des courbes dans les graph
P1->Add(X,Y,100 ,RGB(0,200,200) ,PLOT_TYPE_CROSS_AND_LINE);
P2->Add(X,Y,1000 ,RGB(200,0,0) ,PLOT_TYPE_LINE);
P2->Add(X,Y2,1000,RGB(0,200,0) ,PLOT_TYPE_CROSS_AND_LINE);
P2->Add(X,Y3,300 ,RGB(255,128,64),PLOT_TYPE_CROSS);
P3->Add(X,Y4,100 ,RGB(100,0,0) ,PLOT_TYPE_CROSS);
P3->Add(X,Y5,100 ,RGB(200,0,0) ,PLOT_TYPE_CROSS);
P3->Add(X,Y6,100 ,RGB(255,126,0) ,PLOT_TYPE_CROSS);
P3->Add(X,Y7,100 ,RGB(255,189,20) ,PLOT_TYPE_CROSS);
P1->AddTitle("Y[i-1] + (rand()%2 == 0 ? -1:1)");
P3->AddTitle("Sinus pondéré avec une racine carré");
P3->AddLegend();
P3->AddLegend(0,"Sin{w/4} * sqrt(w)");
P3->AddLegend(1,"Sin{w/4} * sqrt(w*3)");
P3->AddLegend(2,"Sin{w/4} * sqrt(w*6)");
P3->AddLegend(3,"Sin{w/4} * sqrt(w*9)");
return 0 ;
case WM_SIZE:
cx = LOWORD (lParam) ;
cy = HIWORD (lParam) ;
MoveWindow(P1->GetHWND(),20,20,cx/2-20,cy/2-20,TRUE);
MoveWindow(P2->GetHWND(),cx/2+20,20,cx/2-40,cy/2-20,TRUE);
MoveWindow(P3->GetHWND(),20,cy/2+20,cx-40,cy/2-20,TRUE);
break;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE ,PSTR szCmdLine, int iCmdShow)
{
static char szAppName[] = "Graph" ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
hInst = hInstance;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass)){
MessageBox (NULL, "This program requires Windows NT!",szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow (szAppName, "Graphiques",
WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
Conclusion
L'exe est à renommer de Graph.ex en Graph.exe
Fichier Zip
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Interface graphique [ par Oumbre ]
Salut à tous !Voilà mon problème : j'ai un programme qui est écrit en C pour windows et je dois créer une interface graphique qui va avec. De plus, ce
Interface graphique style Windows [ par eliot5 ]
Je viens de créer sous windev un petit logiciel qui fonctionne bien mais j'aimerais connaitre la manière de procéder pour créer une interface graphiqu
Tracer graphique en fonction d'un tableau [ par Bobbix ]
Bonjour,Dans le cadre d'un projet, j'ai besoin de votre aide sur le graphisme en WIN32. Nous avons réalisé une carte électronique d'un oscilloscope qu
Compatibilité allegro-windows : les fonctions le l'API win32 [ par programmateur ]
(Je reposte ce message à cause de problemes de connexion au cite qui m'empechent de repondre a la discution)Salut,Je poste simplement ce message pour
Pb de compilation C++ pour Windows [ par valoue ]
Bonjour,Je developpe actuellement un appli qui doit tourner sous Windows et etre protable sous Linux.J'utilise donc dans mon prog C++ (sous VC++ .net)
Win32 et les fichiers [ par platon179 ]
Bonjour, j'ai un petit souci pour lire les fichiers texte sous windowsComment faut-il faire pour lire une seule ligne complète d'un fichier texte, un
Prog sous Longhorn [ par LaPatoshe ]
Salut à tous. J'envoie ce eptit sujet pour savoir comment va se programmer Windows à l'Avenir vu que Win32 va apparement disparaitre e
MFC & API windows [ par 69lion69 ]
Salut à tous, alors voila g deux applications une sous MFC (client a base de socket) et une deuxième en programmation windows (permet de trc
Editeur de map->interface graphique [ par dletozeun ]
Bonjour,Je voudrais faire une interface grphique windows pour un editeur de map.Cet edtiteur serait composé de plusieurs fenetres OpenGL avec aut
Allegro&Win32 [ par Darksheep ]
Bonjour ^^ Comme je l'expliquais dans le précédent post, j'aimerais créer un éditeur de map genre rpg maker à l'aide d'allegr
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
Comparez les prix

HTC Magic
Entre 429€ et 429€
|