HELP!! comment rafraichir

Signaler
Messages postés
22
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
15 novembre 2005
-
Messages postés
22
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
15 novembre 2005
-
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static string chemin;
static int count=0;
static bool sel_items=0;
HDC hdc ;
PAINTSTRUCT ps ;

case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
AffCam(chemin);
DessinPie(hdc);
EndPaint(hwnd,&ps);
etc...

voila mon probleme, en fait ma fonction AffCam,
me dessine un graphique a partir du chemin donné,
si je met "c:\" a la place du chemin c bon,
mais comment faire pour que le graphique change quand je change le chemin...
en gros comment faire pour changer le chemin,
sachant que c un static string chemin??

je met pas tout le code qui est trop long, j'ai des combobox et Listbox qui me renvoi un chemin, mais je ne peut pas initialiser le chemin au depart... plantage

merci de votre aide

5 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
116
Et tu ne peux pas déclarer ton chemin en static au fichier et non static au niveau de ta fonction ?

DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
Messages postés
22
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
15 novembre 2005

en fait j'ai des case LIST_BOX qui me revoie un chemin a chaque fois que je clique dessus
donc chemin devient a chaque clique c:\\dossier1
je clique chemin devient c:\\dossier1\\dossier2

le changement de chemin marche parfaitement.

mon WM_PAINT me dessine un diagramme par rapport au chemin
je voudrais que le diagramme change par rapport au chemin
j'ai d'autre case qui change mon chemin,...

comment faire pour que mon diagramme se redessinne apres chaque case(LIST_BOX, COMBO_BOX , etc)?????

merci
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
116
A ce moment là, teste le handle de fenêtre passé à ta procédure de
fenêtre pour savoir quel est le contrôle qui nécessite un
raffraichissement (ce sera ainsi le dernier à être modifié
normalement).



Sinon, utilise une variable pour stocker la valeur du dernier contrôle
modifié... mais à ce moment là, autant rendre ta variable chemin
publique à tout ton projet !

DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
Messages postés
22
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
15 novembre 2005

merci de tes conseils, mais je comprends pas trop..
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static string chemin;
static int count=0;
static bool sel_items=0;
HDC hdc ;
PAINTSTRUCT ps ;
RECT rcClient;
RECT rcZONE;
switch (message) /* handle the messages */
{


case WM_TIMER:
rcClient.top=20;
rcClient.left=900;
rcClient.right=1000;
rcClient.bottom=50;
RedrawWindow(hwnd,&rcClient,NULL,RDW_ERASE|RDW_INVALIDATE|RDW_ERASENOW|RDW_NOCHILDREN);
rcZONE.top=400;
rcZONE.left=10;
rcZONE.right=400;
rcZONE.bottom=700;
RedrawWindow(hwnd,&rcZONE,NULL,RDW_ERASE|RDW_INVALIDATE|RDW_ERASENOW|RDW_NOCHILDREN);
return 0;



case ID_LISTBOX :
{ if ((LOWORD(wParam) ID_LISTBOX) && (HIWORD(wParam) LBN_SELCHANGE))
{
chemin=ListBee(chemin);
SetWindowText(edit1,chemin.c_str());
count++;
B1(count);
}
}
break;
case ID_LISTBOX2 :
{ if ((LOWORD(wParam) ID_LISTBOX2) && (HIWORD(wParam) LBN_SELCHANGE))
{
EnableWindow (bouton5,TRUE);
sel_items = 1;
}
}
break;

case ID_COMBOBOX :
{ if ((LOWORD(wParam) ID_COMBOBOX) && (HIWORD(wParam) LBN_SELCHANGE))
{
chemin = ListBii();
count=0;
B1(count);
}

}
break;

}


case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
DeleteObject(hFont);
AffCam("h:\\ESSAIS");
DessinPie(hdc);
EndPaint(hwnd,&ps);


return 0;

case WM_CREATE:
Largeur_Font = LOWORD (GetDialogBaseUnits ()) ;
Hauteur_Font = HIWORD (GetDialogBaseUnits ()) ;
break;

case WM_SIZE:
cxClient = LOWORD (lParam);
cyClient = HIWORD (lParam);
break;

default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}


return 0;
}

Voila j'ai WM_TIMER qui me rafraichi la zone ou il ya le WM_PAINT..no problem

dans mes LISTBOX et COMBOBOX je rentre un chemin qui me liste les dossier et fichier du chemin, (variable static) et me renvoi ensuite un chemin.

Je voudrais a chaque fois que le chemin est renvoyé par la LISTBOX ou ma COMBOBOX que mon diagramme soit redessiné...mais ca marche pas .
si je met AffCam("h:\\ESSAIS"); ca m'affiche le diagramme de ce dossier.
si je met AffCam(chemin le programme plante);

je ne voit pas comment faire!!!
Help please

Merci
Messages postés
22
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
15 novembre 2005

ah desolé :p:p:p:p:p:p
le code est bon:p:p
au temps pour moi

le probleme viens de la fonction
AffCam(chemin); qui marche
cette fonction apelle une fonction alloue(), qui n'est pas de moi qui bug

encore merci et desolé :p