Effacer les graphiques avec InvalidateRect !?

Résolu
Signaler
Messages postés
83
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 octobre 2005
-
Messages postés
83
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 octobre 2005
-
Dans plusieurs source je voie qu'il utilise InvalidateRect pour
"effacer". Mais dans mon cas sa fait en sorte que je recois toujours
WM_PAINT (et donc sa clignote).


[...] WM_PAINT: OnPaint(); [...]



void OnPaint(){

//InvalidateRect(hWnd, &coordonner, TRUE);

// Sinon on recoi toujours WM_PAINT

ValidateRect(hWnd,NULL);

UpdateWindow(hWnd);

HDC hdc = GetDC(hWnd);

DrawIcon(hdc, coordonner.left, coordonner.top, hicon);

ReleaseDC(hWnd, hdc);

}



et quand on clic :

RECT coordonner;

(coordonner remplir grasse a setcoordonner(int x,int y);)



case WM_LBUTTONDOWN:

if(wParam==MK_LBUTTON){

POINTS point;

point = MAKEPOINTS(lParam);

setcoordonner(point.x,point.y);

InvalidateRect(hWnd,&coordonner, TRUE);

UpdateWindow(hWnd);

}



Merci de pouvoir m'aide :)
------------------------------------------
Votre dévoué posseur de question :D

2 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
10
On n'appelle pas UpdateWindow dans WM_PAINT pour commencer, aucun intérêt



void OnPaint(){

PAINTSTRUCT ps;

HDC hdc = BeginPaint(hWnd, &ps);

DrawIcon(hdc, coordonner.left, coordonner.top, hicon);

EndPaint(hWnd, &ps);

}
Messages postés
83
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 octobre 2005

Merci :)

Voilà le code pour que l'image ce déplace:


RECT coordonner;



void OnPaint(){

PAINTSTRUCT ps;

HDC hdc = BeginPaint(hWnd, &ps);

DrawIcon(hdc, coordonner.left, coordonner.top, hicon);

EndPaint(hWnd, &ps);

}



void setcoordonner(int x,int y){

coordonner.top = y;

coordonner.left = x;

coordonner.bottom = coordonner.top + 31;

coordonner.right = coordonner.left + 31;

}



Message a intercepter dans le CALLBACK de la fenêtre:



case WM_LBUTTONDOWN:

if(wParam==MK_LBUTTON){

POINTS point;

point = MAKEPOINTS(lParam);

setcoordonner(point.x,point.y);

InvalidateRect(hWnd,NULL, TRUE);
}

return 0;

case WM_PAINT: OnPaint(); return 0;
------------------------------------------
Votre dévoué posseur de question :D