Newsgroup: it.comp.programmare.win32
Titolo: [BCB] Cursore e grafica...

Ciao gente.
Allora: dovrei sviluppare un'applicazione con un'interfaccia grafica
piuttosto "custom" (pulsanti grafici, immagini trasparenti,
animazioni, etc...). Al contempo mi serve anche il supporto del BCB
per gestire gli eventi e soprattutto i database.
Volevo costruirmi un'"estensione" dei controlli gia' esistenti per
adeguarli allo scopo senza utilizzare librerie grafiche piu' avanzate
(OpenGL, DirectX...), visto che le prestazioni grafiche
dell'applicazione non devono essere eccelse (non e' un gioco).
Il primo problema ce l'ho sul cursore: mi interessava disegnarlo di
qualsiasi dimensione, a colori e magari anche animato. Allora ho preso
un oggetto TImage per cominciare, ho nascosto il cursore di Windows e
per ogni OnMouseMove ho aggiornato la posizione dell'oggetto TImage
facendo corrispondere Top e Left alle coordinate del puntatore.
Funziona... a meta'! Finche' sposto in alto e a sinistra tutto ok (a
parte qualche "flickeraggio"...). Quando lo sposto in basso e a destra
non aggiorna l'immagine finche' non esco con l'angolo superiore
sinistro dal bordo inferiore (o destro) del rettangolo della
precedente posizione. Perche'?!?
Ho provato con Refresh(), Repaint(), Invalidate(), Update(): niente da
fare.
Secondo voi (tenendo presente la premessa all'inizio del messaggio)
devo insistere su questa strada, piegare su librerie un po' piu'
"graphic oriented", o devo utilizzare qualche componente particolare
magari scaricabile da internet?
Grazie.
	Megabob

 magari scaricabile da internet?
Perchè non crearsi un cursore (*.cur o *.ani) con appositi tool ed
utilizzare quello? Oppure con l'API CreateCursor & co. se devi crearlo a
run-time.
Paolo.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Mannò, mannò, mannò, il componente TImage non è fatto per un uso del
genere!!! Se vuoi che una finestra della tua applicazione abbia un
determinato cursore devi disegnare il cursore, metterlo nelle risorse,
caricarlo in runtime e quando registri la classe della finestra ne devi
passare l'handle alla chiamata RegisterClass o RegisterClassEx; dal
momento che usi un tool RAD (e quindi la chiamata RegisterClass o
RegisterClassEx non la fai), devi agire sulla proprietà Cursor della tua
form, però a dire il vero non so come potresti fare per mettere un cursore
tuo (dal momento che BCB ti fa mettere un cursore scelto da una lista);
sfoglia l'help o cerca qualche esempio in Internet, che lo trovi di sicuro.
Ciao.


run-time.
Mi sembrava di aver capito che i cursori di Windows fossero
monocromatici e di dimensioni limitate. Non conosco i file .ani. Ora
mi documentero', ma comunque il problema rimarrebbe nel caso dovessi
muovere una qualsiasi immagine sullo schermo (ad esempio per creare un
effetto di scorrimento...).
Non so che pesci pigliare... L'alternativa sarebbe utilizzare DirectX
o OpenGL, ma mi sembra un approccio piuttosto esagerato per un cursore
colorato, due immagini che si muovono e qualche suono di sottofondo...
Possibile che non esistano componenti grafici un po' piu' furbi da
integrare a quelli standard?
	Megabob

sfoglia l'help o cerca qualche esempio in Internet, che lo trovi di sicuro.
Quella e' una lista dinamica. Puoi aggiungerne di tuoi
tranquillamente.
Il problema e' un altro: i cursori di Windows hanno caratteristiche
MOLTO limitate. Si, insomma, fanno schifo. Prima limitazione tra
tutte, la dimensione che (se non erro) non puo' superare 32x32.
Inoltre non credo che si possa andare oltre i 256 colori. E' un limite
dei file .cur. Stesso dicasi per i file .ani.
Volevo qualcosa che mi desse piu' liberta' dal lato grafico, e' per
questo che volevo studiare un modo "furbo" di farlo.
	Megabob

 integrare a quelli standard?
Non capisco di che componenti hai bisogno oltre a quelli standard...


 nel primo messaggio.
Cmq se usi TImage hai un problema, anche se forse non ti riguarda: il
componente non può "uscire" dalla form (che è sua parent), perciò se il
cursore sta mezzo fuori viene tagliato; dico che forse non ti riguarda
perché questo problema non ti si presenta se la tua form deve stare sempre
a tutto schermo.
ciao.


a tutto schermo.
Infatti non mi riguarda. ;-)
	Megabob

Non capisco di che componenti hai bisogno oltre a quelli standard...
Allora: ho bisogno di un cursore che possa essere _grande_ quanto
voglio e _colorato_ quanto voglio.
Inoltre mi piacerebbe un componente che gestisse il movimento di
un'immagine sullo schermo senza farlo flicherare cosi' tanto...
Non credo ci sia soluzione per entrambi i problemi senza passare a
librerie grafiche.
	Megabob

 questo che volevo studiare un modo "furbo" di farlo.
il modo "furbo" è sempre sbagliato
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.3. C, C++ and ASM developers
                               and beta testers are welcome!

il modo "furbo" è sempre sbagliato
Anche qui niente faccine. Invocando il beneficio del dubbio, spero te
le sia dimenticate anche questa volta.
	Megabob

 Infatti non mi riguarda. ;-)
Ah, ok :)
Al.


 queste limitazioni.
e allora? puoi dire che *è* una limitazione del formato?


e allora? puoi dire che *è* una limitazione del formato?
Hai ragione. Ho sbagliato a scrivere "E' un limite dei file .cur", ma
e' anche vero che tutti i file .cur che ho sul disco fisso sono
32x32x16 (compresi quelli che ho in alcune librerie), i cursori di
Windows lo stesso e quando apro l'editor del C++ Builder per disegnare
un cursore (.cur) mi da' ancora le stese limitazioni (anzi invece che
16 colori me ne da' 2).
Era ragionevole (erratamente se consideriamo la logica) pensare che
non fossero tutte coincidenze. Se invece e' come dici tu (e lo sara'
sicuramente), allora sono veramente tali. Tutto qui.
Ti ringrazio per la dritta, ma devo nuovamente ammettere che non
riesco a comprendere il tuo tono scontroso e insofferente nei miei
riguardi. Non mi sembra di aver assunto modi da saccente ne tantomeno
di averti offeso in qualche modo...
	Megabob

Suvvia, non litigate :D
Guarda Megabob, che in fin dei conti Juliet non ha mica detto niente di
che, solo una battutina (anche simpatica) che poi avete amplificato a
vicenda e che ora se continua sta per sfociare in una guerra.
Comunque, aldila' di tutto, in generale Juliet nei messaggi che ha postato
su questo newsgroup e che io ho letto ha dimostrato grande preparazione,
quindi credo che dovresti darle retta.
Non è il caso di bisticciare :D su coraggio, fate la pace :D mannaggia
diavoletto, che ci ha fatto litigà ... :DD


diavoletto, che ci ha fatto litigà ... :DD
Ripeto, ho cercato di essere il piu' diplomatico possibile e non
voglio litigare.
A parte queste questioni, mi e' rimasto impossibile fare accettare a
Windows XP cursori piu' grandi di 32x32. Mi piacerebbe sapere come ha
fatto Juliet. Grazie.
	Megabob

 fatto Juliet. Grazie.
In Windows 2000 funziona. Se si potessero fare screenshot che includono 
il cursore te ne manderei uno


il cursore te ne manderei uno
Con XP sembra di no. Ho disegnato un cursore 64x64 a 24 bit con
IconCool Editor e l'ho salvato come .cur. Quando lo importo nella
finestra per l'impostazione dei cursori, mi mantiene le sfumature
(anche se credo che riduca la palette a 256) pero' me lo ridimensiona
a 32x32... Boh!
	Megabob

 il cursore te ne manderei uno
Mandagli proprio il file .cur, no? Oppure digli come hai fatto a crearlo.
Se funziona in Win2000 *deve* funzionare anche su XP (se nn erro hai detto
che XP legge pure le informazioni alpha).
ciao.


 riguardi
capitano molte, troppe persone che per ignoranza e presunzione fanno le 
domande sbagliate ma pretendono comunque una risposta. Chiedo scusa per 
averti scambiato per uno di loro


 a 32x32...
nella preview te lo fa vedere 32x32, ma su schermo dovrebbe comparire a 
piene dimensioni: hai provato *effettivamente* il cursore?


 Oppure digli come hai fatto a crearlo
non l'ho fatto io, non ho idea di che programma sia stato usato


piene dimensioni: hai provato *effettivamente* il cursore?
Si, si. Ho fatto parecchie prove. Il cursore me lo cambia ma lo
ridimensiona. Ho tentato anche con diverse dimensioni (48x48, 64x64,
96x96, etc): niente. I colori vanno bene ma la dimensione e' sempre
32x32.
Provero' a scaricare e utilizzare AX Cursors che sembra fatto apposta
per l'editing dei cursori...
	Megabob

averti scambiato per uno di loro
Nessun problema. L'importante e' chiarirsi. :-)
	Megabob

non l'ho fatto io, non ho idea di che programma sia stato usato
Vediamo come va con AX Cursors. Al limite mi scarichero' qualche
cursore gia' "pronto" e provero' con quello. Grazie!
	Megabob

 averti scambiato per uno di loro
ma che strano deja vu! :D


	Megabob
Niente da fare anche con questo programma e con varie dimensioni. I
colori vanno bene, le dimensioni no. Al momento dell'applicazione del
nuovo cursore questa volta non lo ridimensiona ma lo vede
completamente trasparente!
A questo punto mi chiedo se sia possibile farlo attraverso le semplici
proprieta' dei puntatori del mouse oppure se sia necessario impostarlo
con altri sistemi. Juliet, come hai fatto? L'hai semplicemente
specificato come nuovo puntatore nelle proprieta' del mouse o l'hai
inserito in qualche altro modo?
	Megabob