begin process at 2012 02 10 13:06:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Graphique

 > 

Dimensions de la surface client


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Dimensions de la surface client

mercredi 29 mars 2006 à 23:13:18 | Dimensions de la surface client

julienbornet

Bonjour Brunews (je dit Brunews car en general c'est lui qui repond a mes messages le pauvre, bon d'un autre cote c'est lui l'admin) et bounjour au autre aussi. Bon voila je te remercie de m'avoir renseigner pour le trace des graphiques. Le Petzold ma bien aider. Cependant j'ai un petit probleme que je n'arrive pas a resoudre. Dailleur a se sujet je ne sais pas si c'est moi ou s'il y a une erreur mais page 46 du chapitre 5 il dit que pour changer l'origine de la fenetre il faut utiliser SetViewportOrgEx(hdc, 0, cyClient,NULL) et il indique qd meme temps ceci change le sens de l'axe y mais chez moi ca na change pas le sens (bon c'est pas tres grave mais voila).

En fait je cherche a trace un graphique plus long que haut. Je voudrais donc avoir une tres longue zone client dans la fenetre avec une barre de defilement horizontale, mais je n'ai pas trouver comment faire. Bon je supposes que tu vas m'indiquer un chapitre du Petzold (comme ca au fur et a mesure je le lit en entier lol). Bon j'ai bien compris quec'est a la réception du message WM_SIZE, que nous récupérons les dimensions de la surface client de la fenêtre dans le paramètre lParam joint au message. La largeur étant dans son mot de poids faible et la hauteur dans son mot de poids fort. Nous les extrayons à l'aide des macros LOWORD et HIWORD. mais comment faire pour avoir donc une barre de defileemnt sur le bas et une zone client tres tres longue?

Bon dvance merci
jeudi 30 mars 2006 à 00:09:51 | Re : Dimensions de la surface client

BruNews

Administrateur CodeS-SourceS
Regarde MSDN à ScrollWindowEx, tu lis bien et ensuite tu suis le lien d'exemples en bas.

ciao...
[ Lien ]
BruNews, MVP VC++
jeudi 30 mars 2006 à 00:45:49 | Re : Dimensions de la surface client

julienbornet

euh c'est pas pour faire mon boulet mais je suis aller sur le site [ Lien ] et j'ai rechercher ScrollWindowEx et la ben y en tout tout pelin alors c lequel que je prend stp

merci
jeudi 30 mars 2006 à 00:53:14 | Re : Dimensions de la surface client

BruNews

Administrateur CodeS-SourceS
[ Lien ]

ciao...
[ Lien ]
BruNews, MVP VC++
jeudi 30 mars 2006 à 00:55:11 | Re : Dimensions de la surface client

BruNews

Administrateur CodeS-SourceS
Je reconnais que c'est un peu galère à trouver avec MSDN sur le net, en local va nettement mieux.

ciao...
[ Lien ]
BruNews, MVP VC++
jeudi 30 mars 2006 à 10:50:04 | Re : Dimensions de la surface client

buno

Administrateur CodeS-SourceS
T'as pensé à lancer ton fan-club BruNews? :P

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
jeudi 30 mars 2006 à 19:33:04 | Re : Dimensions de la surface client

julienbornet

Ok ok ok , bon apres avoir bien lu et essayer d'implementer quelque chose j'ai pu m'apercevoir que c'etait bien complique tout ca. Ben oui en fait comme je t'ai dit je trace mon graph a aprtir de donnes que je lit au fur et a mesure dans un fichier. Le probleme c'est que moi je pensais que je pouvait trace tout mon graph dans la zone client , et ensuite n'en montre qu'une parti dans la fenetre. En fait c'est comme si on deplacait un loupe sur un pelicule photo par exemple.
Mais en fait d'apres ce que j'ai pu voir dans l'exemls, il faut redessiner la zoen client qui se trouve dans la fentre a chaque fois que l'on depace la scroll bare (en gros ca revient a dessiner le graph par parti quoi). Le probeleme c'est que pour faire ca j'ai deux solution, soit je deplace ma tete de lecture de fichier pour pouvoir redessiner la bonne partie, soit j'enregistre tous le fichiers en memoire(dans un tableau avec malloc par exmeple) puis je lui dit d'acceder a tel valeur du tableau. En tous les cas dit moi si je fais fausse route car la franchement j'avoue que c'est quand meme pas tres simple.

d'avance merci

PS: Bruno a eu une bonne idee, mettons en place le fan club de Brunews mais je previens d'avance c pas moi la pompom girl
jeudi 30 mars 2006 à 20:04:18 | Re : Dimensions de la surface client

BruNews

Administrateur CodeS-SourceS
Si ce n'est pas trop énorme, la version tableau me semble préférable pour la vitesse.

ciao...
[ Lien ]
BruNews, MVP VC++
jeudi 30 mars 2006 à 20:33:27 | Re : Dimensions de la surface client

julienbornet

Ben justement c'est bien mon probleme car la taille des fichiers sera sans doute tres variable (mais a mon avis jamis en dessous de 20Mo). Car en fait la taille du fichier depend directement du temps que dure l'aquisition, et du nombre de paramtres que l'on enregistre lors de cette aquisition. Du coup je penses que ca peut  atteindre une taille dans les 200 Mo. Au quel est ce possble de faire les deux methode en diasnt par exemple que si le fichier lu depasse la taille de 100 Mo par exemple on passe en mode lecture ficheir? merci 
jeudi 30 mars 2006 à 22:40:02 | Re : Dimensions de la surface client

julienbornet

AAAAAAAAAAhhhhhhhhhh je coris que je vais finir par me sucider. Bon j'ai passer ma journe la dessus, et j'ai un gros probleme ca na marce pas. En fait deja je ne sais meme pas si ma zone client est relleemnt redimensionner, en plus lorsque je fait bouger ma scroll barre mon graph ne s'actualise po. Enfin je peux dire que dans un sens, il continu a trace la ligne en continu a la place de trace la suite.
Bon je sais que c'est pas bien mais comme je ne penses pas y arriver tout seul voici mon code qui gere la fenetre graphique:

/*=================================================================================*/

/* Fonction qui scan le fichier pour connaitre le nombre de points */

/*=================================================================================*/

int readfile(void)

{

int endfile;

int i;

int xRead;

float yRead;

FILE * open;

open = fopen("tab1.txt","r");

i = 0;

DefineN:

endfile = feof(open);

if (endfile == 0)

{

i++;

fscanf (open,"%d ",&xRead);

fscanf (open,"%f\n",&yRead);

goto DefineN;

}

else

{

fclose(open);

}

return i;

}

/*==================================================================================*/

/* fonction used to record the file in a table */

/*==================================================================================*/

int recintable(void)

{

int N;

FILE * open;

int xRead;

float yRead;

open = fopen("tab1.txt","r"); //Ouvre le fichier des points

N = readfile();

x=(int *)calloc(N,(sizeof(int)));

y=(float *)calloc(N,(sizeof(float)));

if(x==NULL)

{

return FALSE;

}

if(y==NULL)

{

return FALSE;

}

/*on enregistre le fichier en memoire*/

for (int cpt = 1; cpt <= N; cpt = cpt++)

{

fscanf (open,"%d ",&xRead);

x[cpt] = xRead;

fscanf (open,"%f\n",&yRead);

y[cpt] = yRead;

}

fclose(open);

return 0;

}

 

 

/*==================================================================================*/

/* Procedure servant a desssiner dans la fenetre */

/*==================================================================================*/

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

static int cxClient;

static int cyClient ;

static int xClientMax;

static int xPos;

int Nbpoint;

HDC hdc ;

PAINTSTRUCT ps ;

SCROLLINFO si;

switch (message)

{

case WM_CREATE :

recintable();

Nbpoint = readfile();

xClientMax = Nbpoint*2;

return 0;

/*===============================Gets the size of the client area=============================*/

case WM_SIZE:

cxClient = LOWORD (lParam) ;

cyClient = HIWORD (lParam) ;

si.nMax = xClientMax;

return 0 ;

/*===================================Control of the scroll bar================================*/

case WM_HSCROLL:

// Get all the vertial scroll bar information

si.cbSize = sizeof (si);

si.fMask = SIF_ALL;

// Save the position for comparison later on

GetScrollInfo (hwnd, SB_HORZ, &si);

xPos = si.nPos;

switch (LOWORD (wParam))

{

// user clicked left arrow

case SB_LINELEFT:

si.nPos -= 1;

break;

// user clicked right arrow

case SB_LINERIGHT:

si.nPos += 1;

break;

// user clicked the scroll bar shaft left of the scroll box

case SB_PAGELEFT:

si.nPos -= si.nPage;

break;

// user clicked the scroll bar shaft right of the scroll box

case SB_PAGERIGHT:

si.nPos += si.nPage;

break;

// user dragged the scroll box

case SB_THUMBTRACK:

si.nPos = si.nTrackPos;

break;

default :

break;

}

// Set the position and then retrieve it. Due to adjustments

// by Windows it may not be the same as the value set.

si.fMask = SIF_POS;

SetScrollInfo (hwnd, SB_HORZ, &si, TRUE);

GetScrollInfo (hwnd, SB_HORZ, &si);

// If the position has changed, scroll the window

if (si.nPos != xPos)

{

ScrollWindow(hwnd, (xPos - si.nPos), 0, NULL, NULL);

}

return 0;

 

/*==========================================Plot the graph==============================*/

case WM_PAINT:

hdc = BeginPaint (hwnd, &ps) ;

int xBeg ,xEnd ;

float yBeg, yEnd;

int numpoint;

int N;

N = readfile();

static HPEN hpen1, hpen2;

hpen1 = CreatePen (PS_SOLID,1,RGB(255,0,0));

hpen2 = CreatePen (PS_SOLID,1,RGB(160,160,160));

 

GetScrollInfo (hwnd, SB_HORZ, &si);

numpoint = si.nPos* (N*3)/(si.nMax);

 

SetViewportOrgEx(hdc,0,cyClient/2,NULL); // redefinition du repere

SelectObject(hdc,hpen2); //selectionne le stylo gris

MoveToEx(hdc,0,0,NULL); //Se place au point de depart pour trace l'axe des abscisse

LineTo(hdc,cxClient,0); //Trac la'xe des abscisse

xBeg = x[numpoint];

yBeg = y[numpoint];

numpoint = numpoint + 1;

for (int pos = numpoint ; pos <= N; pos++)

{

SelectObject(hdc,hpen1);

MoveToEx(hdc,xBeg,yBeg,NULL); // permet de se deplacer au point de depart

xEnd = x[pos]/50; // Definit l'abisce point d'arrive

yEnd = -(y[pos]*300); // Definit l'ordonne du point d'arrive

LineTo(hdc,xEnd,yEnd); // Trace la ligne entre ces deux point

xBeg = xEnd; // Indique que l'abscisse du prochain point de depart est egale a l'abscisse de ce point d'arrive

yBeg = yEnd; // Indique que l'ordonne du prochain point de depart est egale a l'ordonne de ce point d'arrive

}

 

EndPaint (hwnd, &ps) ;

return 0 ;

case WM_DESTROY:

DeleteObject(hpen1);

DeleteObject(hpen2);

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam) ;

}


1 2 3

Cette discussion est classée dans : client, dit, dimensions, brunews, surface


Répondre à ce message

Sujets en rapport avec ce message

création de client [ par sub-zero ] comment mettre un client en écoute tout en gérant les événements ???p.s: hmm ca marche mais le processus reste bloquant jusqu'à la première connexion client IRC ?? [ par crAzYJoJoo ] Slt, je cherche le code source d'un client irc pour voir comment ca marcheest ce que qq1 sait ou je peux trouver ca ?merci d'avance ++ Visual C++ Affichage dans la zone client [ par Winhotto ] Bonjour,je cherche un support qui me permette de faire la mise en page de la zone client.Par exemple un support quadrillé sur lequel je peux mettre mo C++ Builder et Telnet [ par Sylvain ] bonjour,je fais une petite appli en c++ builder ou j'ai 1 client FTP et un client Telnet.Pour le premier, aucun pb, j'utilise TNMFTP mais, je n'arrive client/serveur FTP [ par fab ] Salut!!!Je développe un prog client/serveur FTP en C++ Builder . Je veux pouvoir envoyer un fichier image au serveur . Pour cela j'utilise le composan Client IRC [ par SAtaN ] quelqu'un aurait il un tutoriel, des infos, pour m'aider à creer un client IRC ???PS : j'utilise Borland C++a+ programmation client [ par CyraX ] bonjour tout le monde...Voila je souhaiterais programmer un client pour un server de message instantanés style AIM ou MSN.Cependant, je manque d'infor Lecture/Ecriture/Modification d'une structure dans un fichier [ par paniX ] Bonjour. Alors voici mon probleme:j'ai créé une structure client qui a cette forme :struct client{ int id; char nom[30]; char prenom[30]; char adresse Pointeurs sur des tableaux de plusieurs dimensions [ par ProGamer ] J'ai besoin de faire des pointeurs sur ce genre de tableaux. Voici comment je m'y prends (et surtout, voici comment ça ne marche pas...):unsigned char tableau [ par zeratul67 ] J'ai une fonction qui doit me renvoyer un tableau à deux dimensions, mais la taille de l'une des ces 2 dimensions est inconue. (tableau: char cp[x][25


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,791 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales