void dessineLigne (HWND fenetreCiblee, const RECT dimensions, HPEN crayon)
{
//Déclarations préalables + récupération de la surface de dessin
PAINTSTRUCT ps;
HDC dc = BeginPaint(fenetreCiblee, &ps);
//Application du crayon sur le dc
SelectObject(dc, crayon);
//Dessin de la ligne
MoveToEx(dc, dimensions.left, dimensions.top, NULL);
LineTo(dc, dimensions.right, dimensions.bottom);
//Libération de la surface + fin du dessin
EndPaint(fenetreCiblee, &ps);
return;
}
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 27 nov. 2009 à 18:11
Mets un STATIC au lieu d'un EDIT, devrait aller mieux.
Ensuite tu sous classes ce STATIC pour lui réécrire son WM_PAINT dans lequel tu mettras le code de ta fonction.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 27 nov. 2009 à 21:24
On change l'adresse de la callback par défaut de traitement des messages pour qu'il pointe vers une fonction perso.
Un truc dans ce genre:
WNDPROC OldProcEdNum;
LRESULT CALLBACK EdProcNoPaste(HWND hwnd, UINT mssg, WPARAM wParam, LPARAM lParam)
{
if(mssg == WM_PASTE) {MessageBeep(0); return 0;}
return CallWindowProc(OldProcEdNum, hwnd, mssg, wParam, lParam);
}
Fenetre parent à l'init:
case WM_INITDIALOG:
OldProcEdNum = (WNDPROC) SetWindowLongPtr(hednum, GWLP_WNDPROC, (LONG_PTR) EdProcNoPaste);