|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 263
|
[GDI+ | C++] Usare GDI+ in eventi diversi da WM_PAINT
Salve a tutti,
come si fà ad usare gdi + in eventi diversi da WM_PAINT come ad esempio WM_MOUSEMOVE?? |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
|
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 263
|
Semplicemente non mi disegna nulla!!
Se peró apro una voce del menú la porzione di finestra sottostante si aggiorna ed il resto no... Forse sbaglio q.cosa nel codice |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
|
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 263
|
Ho capito l'errore ma non so come risolverlo
allora l'errore é che creavo il DC tramite: Codice:
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd,&ps);
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
È chiara anche un'altra cosa: bisogna valutare bene cosa devi disegnare al di fuori di WM_PAINT e quanto tale operazione di disegno deve essere "persistente" o meno. Mi spiego meglio: per esempio a seguito di WM_LBUTTONDOWN prendi il HDC e disegni direttamente un pallino nel punto del click. Successivamente potrebbe arrivare un WM_PAINT. Se volevi rendere tale pallino persistente, devi memorizzarti da qualche parte una informazione che l'hai disegnato in modo che al WM_PAINT lo ridisegni.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 263
|
Ne sono consapevole... infatti volevo usarlo solo per evidenziare in che parte del controllo si trovava il mouse. Infatti ho giá fatto qualcosa del genere in vb.net e mi funzionava benissimo! Grazie ancora per la tua risposta
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Tutto ciò è sbagliato, se WM_PAINT esiste è perchè devi disegnare solo lì, non ha senso disegnare in WM_LBUTTONDOWN e poi anche in WM_PAINT. Basta memorizzare da qualche parte che deve essere disegnato un pallino (es disegnaPallino = true), e forzare un repaint della finestra con InvalidateRect, RedrawWindow o SetWindowPos.
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Da MSDN When to Draw in a Window dice: If an action requires immediate feedback, the application can draw while the action takes place, without waiting for WM_PAINT. For example, a typical application highlights the area the user selects rather than waiting for the next WM_PAINT message to update the area.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:07.




















