Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - InvalidateRect e ValidateRect
Forum - C/C++ - InvalidateRect e ValidateRect

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
daemon-6.66 (Ex-Member)
Rookie


Messaggi: 24
Iscritto: 11/06/2008

Segnala al moderatore
Postato alle 15:53
Venerdì, 18/09/2009
Salve ragazzi,
non sapevo se pubblicarlo qui o nella sezione Windows, ma il titolo dice tutto.

Qualcuno mi può spiegare a che servono queste 2 funzioni?

Non mi rimandate su MSDN grazie!

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 16:50
Venerdì, 18/09/2009
Le due API aggiungono (invalidate) e rimuovono (validate) una area indicata di una finestra dall'elenco delle aree da ridisegnare.

PM Quote
Avatar
daemon-6.66 (Ex-Member)
Rookie


Messaggi: 24
Iscritto: 11/06/2008

Segnala al moderatore
Postato alle 18:47
Venerdì, 18/09/2009
Testo quotato

Postato originariamente da theprogrammer:

Le due API aggiungono (invalidate) e rimuovono (validate) una area indicata di una finestra dall'elenco delle aree da ridisegnare.



Una descrizione più esauriente?:-|

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 19:32
Venerdì, 18/09/2009
Non c'e' molto in piu' da dire ... Cosa non ti e' chiaro?

Ultima modifica effettuata da theprogrammer il 18/09/2009 alle 19:34
PM Quote
Avatar
daemon-6.66 (Ex-Member)
Rookie


Messaggi: 24
Iscritto: 11/06/2008

Segnala al moderatore
Postato alle 22:00
Venerdì, 18/09/2009
Mi confondono queste 2 funzioni:

se ho capito bene InvalidateRect crea all'interno della Client Area un area rettangolare che deve essere ridisegnata quando si chiama BeginPaint, mentre poi che fine fa il resto della Client Area?

Opposto a InvalidateRect;

ValidateRect invece dovrebbe fare in modo di non aggiornare un area della Client Area?

Allora lavorano in questo modo o mi sto confondendo un sacco?:-|

queste funzioni posso chiamarle solo nel WM_PAINT?

Aiutami please!

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 9:31
Sabato, 19/09/2009
Testo quotato

Postato originariamente da daemon-6.66:

Mi confondono queste 2 funzioni:

se ho capito bene InvalidateRect crea all'interno della Client Area un area rettangolare che deve essere ridisegnata quando si chiama BeginPaint, mentre poi che fine fa il resto della Client Area?



La InvalidateRect NON crea nulla.

Come ti dicevo, AGGIUNGE una zona rettangolare della finestra ad una "lista" (per ogni finestra) in cui esistono tutte le aree che necessitano di essere ridisegnate da Windows.

Supponi di disegnare una linea nella tua client area. Per vedere la linea stessa, devi dire a Windows di ridisegnare la finestra e lo fai INVALIDANDO quella zona rettangolare.

Testo quotato

Opposto a InvalidateRect;

ValidateRect invece dovrebbe fare in modo di non aggiornare un area della Client Area?



Questa API si usa pochissimo ... e' il contrario della InvalidateRect ... ovvero indica che una certa area puo' non essere ridisegnata.

Supponi che sia stata disegnata la linea ma subito sia stato dato un comando UNDO per eliminare la stessa linea. Dato che il rettangolo client non e' cambiato, se avevi usato la Invalidate allora puoi usare la Validate per indicare a Windows che quell'area non deve essere ridisegnata.

Attenzione ... se il ridisegno deve essere fatto o meno, alla fine decide Windows analizzando l'insieme delle aree invalidate per ogni finestra in ogni determinato momento.

Testo quotato

queste funzioni posso chiamarle solo nel WM_PAINT?



No ... anzi, non devono essere richiamate quando si gestisce il WM_PAINT.

Testo quotato

Aiutami please!



Non capisco perche' il problema e' su queste due API (essenzialmente la Invalidate che si usa molto di piu').

Hai un programma che non funziona ? Posta il codice che e' meglio ...

Ultima modifica effettuata da theprogrammer il 19/09/2009 alle 9:32
PM Quote
Avatar
daemon-6.66 (Ex-Member)
Rookie


Messaggi: 24
Iscritto: 11/06/2008

Segnala al moderatore
Postato alle 13:03
Sabato, 19/09/2009
potresti farmi un esempio completo con del codice con qualche commento?
Mi basta anche la Window Procedure solo

Giusto per capirci meglio


grazie ciao

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 13:18
Sabato, 19/09/2009
Testo quotato

Postato originariamente da daemon-6.66:

potresti farmi un esempio completo con del codice con qualche commento?
Mi basta anche la Window Procedure solo

Giusto per capirci meglio


grazie ciao



Non posso perche' la InvalidateRect si usa ovunque nel programma quando modifichi parte dell'interfaccia utente.

Ma scusa, perche' non proponi del codice che non ti funziona invece di continuare con queste richieste sulla InvalidateRect?

PM Quote
Avatar
daemon-6.66 (Ex-Member)
Rookie


Messaggi: 24
Iscritto: 11/06/2008

Segnala al moderatore
Postato alle 14:58
Sabato, 19/09/2009
non ho del codice attualmente, era solo perchè stavo studiando un manuale ma non riuscivo a capire come usarle e cosa facevano...

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo