|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
[Visual C++] WM_PAINT e OnPaint
Salve a tutti
mi trovo a dover risolvere un problemino, e come al solito chiedo aiuto a voi (e se nn fosse per voi....) In pratica, il mio programma disegna un grafico su una parte dello schermo, e aggiorna l'area plot indefinitamnete ficnhè nn fornisco il comando stop. Quello che voglio è che la finestra così com'è dopo lo stop (con dati e grafico "freezati") nn venga più ridipinta, cioè nn si cancelli quando windows genera il messaggio WM_PAINT. Avevo parzialmente risolto il probl inserendo nella funzione OnPaint la chiamata a OnInitDialog, dove avevo inserito il codice che inizializzava la finestra, ma ora nn voglio che venga reinizializzata la finestra... come posso fare? Vedo che OnPaint dichiara di default in oggetto CClientDC dc(this).... nn c'è qualcosa che posso fare tramite questo, tipo salvare l'area client con tutti i disegni e ridisegnarla com'è ogni volta che viene causato WM_PAINT... aiutatemi!!
__________________
ho fatto affari con: na decina di anime ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
Quote:
PS: nn sono gay... ![]() PS2: vado a darci un'occhiata, spero di capirci al volo...
__________________
ho fatto affari con: na decina di anime ![]() |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
allora...
penso che ovviamente la chiamata a RestoreDC() devo metterla nella funzione OnPaint()..... sono dubbioso su dove chiamare la funzione SaveDC()... in pratica vorrei che fosse chiamata un attimo prima che la finestra venga coperta ecc, in pratica subito prima dell'evento che mi causa la OnPaint().... che mi suggerisci?
__________________
ho fatto affari con: na decina di anime ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
come prevedibil o nn va bene o (molto + probabile) nn so usarli...
supponiamo che voglia salvare lo schermo così com'è quando premo il tasto stop, e che quando si genera il messaggio WM_PAINT lo schermo torni com'era quando ho fatto click su stop... Nella funzione OnStopButton() ho scritto: CClientDC dc(this); dc.SaveDC(); (ho anche provato a fare SaveDC(dc); ) poi nella funzione OnPaint() ho provato (all'inizio viene dichiarato un oggetto CPaintDC dc(this)) 1) dc.RestoreDC(-1); 2)CClientDC dlg(this); dc.RestoreDC(-1); come si fa???? ![]()
__________________
ho fatto affari con: na decina di anime ![]() |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Perchè RestoreDC(-1)? MSDN dice:
Quote:
![]() |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
Quote:
ora cmq sonoalle prese cn un probl + grave ![]() ho appena aperto una discussione...
__________________
ho fatto affari con: na decina di anime ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:21.