Bonjour,
J'ai concu un programme qui affiche des sortes de post it sur l'écran, déplaçables à la souris. Les données que j'y affiche viennent d'une structure, pas de problèmes pour l'affichage. Tout marche bien jusqu'à ce que j'essaye de déplacer les post it. Dès que deux post it se chevauchent celui de l'arrière plan se redessine avec les paramètres de la dernière structure utilisée. (la copie conforme du dernier post it créé)
Comment faire pour que chaque post it reste lui - même ?
Merci d'avance
LRESULT APIENTRY MakeStrip(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT paintst;
RECT rcClient;
ptmaillon ptvar=fin;
Pt_Strip* p;
switch (message)
{
case WM_TIMER:
rcClient.top=0;
rcClient.left=0;
rcClient.right=200;
rcClient.bottom=50;
RedrawWindow(hDlg,&rcClient,NULL,RDW_ERASE|RDW_INVALIDATE|RDW_ERASENOW|RDW_NOCHILDREN);
return 0;
case WM_PAINT:
{
HFONT hFont;
hFont=CreateFont(13,0,0,0,700,FALSE,FALSE,FALSE,0,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,"Comic Sans MS");
hDC=BeginPaint(hDlg,&paintst);
SelectObject(hDC,hFont);
p=ptvar->ptinfo;
if (p->type_vol==0 )
{ TextOut(hDC,0,0,"Départ",strlen("Départ")); }
if (p->type_vol==1 )
{ TextOut(hDC,0,0,"Arrivée",strlen("Arrivée"));}
if (p->type_vol==2 )
{ TextOut(hDC,0,0,"Vol",strlen("Vol"));}
TextOut(hDC,0,14,p->immatriculation,strlen(p->immatriculation));
TextOut(hDC,0,26,p->type_appareil,strlen(p->type_appareil));
TextOut(hDC,0,39,p->ETD,strlen(p->ETD));
if (p->type_vol==0 || p->type_vol==1)
{
TextOut(hDC,50,0,p->destination,strlen(p->destination));
TextOut(hDC,50,14,p->QTN,strlen(p->QTN));
}
if (p->type_vol==0 || p->type_vol==2)
{
TextOut(hDC,50,26,p->provenance,strlen(p->provenance));
TextOut(hDC,50,39,p->QTP,strlen(p->QTP));
}
TextOut(hDC,90,0,p->comment,strlen(p->comment));
EndPaint(hDlg,&paintst);
DeleteObject(hFont);
return 0;
}
case WM_LBUTTONDOWN:
/* Faire bouger le post it */
SendMessage(hDlg,WM_SYSCOMMAND, SC_MOVE | HTCAPTION, 0); // Simulation du clik sur "Caption"
UpdateWindow(hDlg);
return 0;
case WM_RBUTTONDOWN:
DestroyWindow(hDlg);
return 0;
default:
return DefWindowProc(hDlg, message, wParam, lParam);
}
}