Newsgroup: it.comp.programmare.win32
Titolo: ma si puo' fare?

vorrei disegnare una pallina che rimbalza sullo schermo, e che continua a
farlo mentre si continua a lavorare con le varie applicazioni.

 ha scritto nel messaggio
news:8us1km$gav$1...@nslave3.tin.it...


    // per assegnare alla finestra la regione creata
hmmm, horribile se mi permette :)
direbbi piuttosto un GetDC() specificando la periferica "DISPLAY", un 
CreateCompatibleDC() e poi giů di GDI. Molto meglio di dover mantenere un 
handle di finestra, nella mia very humble opinione :)

:

Credo che cambierai la tua humble opinione appena qualcuno si mettera a 
scrollare la finestra su cui stava passando la pallina :)
E' comunque vero che il tuo approccio č sicuramente molto piů leggero dal 
punto di vista delle risorse (CPU soprattutto). Potrebbe essere valido per 
un contesto "statico" (ex: uno screen saver).
-- 
Valter Minute
min...@inwind.it
 (the reply address of this message is invalid)

valido per un contesto "statico" (ex: uno screen saver).
per questo creo un nuovo contesto anzichè usarne uno esistente. Lo spazzo 
via ad ogni animazione successiva. E se non ti piace, usa DirectX e non 
rompere :))))

 rompere :))))
Va be' che in Windows gli Handle sono solo 16384, ma per uno in piů non mi
farei tutti questi problemi!!!
Io sono daccordo con Valter, meglio un handle che generare ogni volta in
CompatibleDC.
Poi, scusa, ma che cambia se usi DirectX: non avresti gli stessi problemi???
 ---  MiB ----



rompere :))))
!? Forse non mi sono spiegato bene...
Per "ripulire" la posizione precedente della pallina puoi ricorrere a un 
"salvataggio" in un memory DC della porzione di schermo sovrascritta o a 
una chiamata a InvalidateRect/UpdateWindow.
Il problema si presenta quando vai a disegnare la pallina. Visto che la 
pallina non è rettangolare... hai diverse possibilità:
1. la disegni utilizzando GDI.
2. utilizzi uno "sprite" software copiando prima una mask e poi la pallina 
utilizzando un BitBlt in AND e poi una in OR.
3. ti copi la porzione (rettangolare) di schermo dove devi disegnare la 
suddetta pallina in un DC in memoria, disegni la pallina e rimetti a video 
il risultato.
In ognuno di questi casi, se la zona in cui stai operando cambia tra una 
delle operazioni di cui sopra e la successiva (per un scrolling, un 
animazione o altro) rischi di disegnare un immagine sbagliata e quindi di 
"sporcare" il video disegnando la pallina su uno sfondo non corretto 
(tecnica 2) o lasciando "tracce" della pallina (tecnica 1 e 2).


io ho ovviamente tentato con ambo i sistemi
con la finestra funziona che e' una meraviglia, ho pure fatto una stella che
gira al posto di una pallina con continui SetWindowRgn e va lostesso
fluido...
con GetDC(NULL) invece, funziona solo a schermo fisso
come modifichi qualcosa, siccome vai a sporcare proprio la bitmap in cui
potresti trovare la parte pulita dello schermo (ma che non lo e' visto che
ci hai disegnato un pallina).... mi spiego male, ma proprio non si puo' fare
(a meno che non si usi ogni volta InvalidatreRect(NULL...)... ma sfarfalla
da morire)
mah... forse si dovrebbe andare direttamente a video, e copiare da li il
frammento pulito della bitmap dello schermo... ma non saprei da dove
iniziare per farlo
grazie 1000, ciao

problemi??? 
e che ne so? ^___^
è che sapevo che le directx permettevano addirittura di disegnare sopra il 
puntatore del mouse

ma sfarfalla da morire)
e se invalidassi solo il rettangolo in cui č contenuta l'immagine della 
pallina? guarda, se ti va bene anche con una finestra, non importa, non 
voglio trasformarti nella mia cavia :)

voglio trasformarti nella mia cavia :)
scherzi? e' il mio sogno
ci ho provato, invalida tutto lostesso...