Newsgroup: it.comp.programmare.win32
Titolo: Handle ed oggetti

Salve a tutti,
scrivendo codice cbuilder mi trovo nella necessità di ottenere un puntatore
ad un oggetto avendo il suo handle, come si può fare?( anche con qualche
API)
grazie in anticipo per le eventuali risposte.
ciao michele

Che oggetto?


l'oggetto a cui mi riferisco è un componente.

 l'oggetto a cui mi riferisco č un componente.
Scusa ma non capisco la tua richiesta.
Se fosse un processo o un thread etc ... la tua domanda avrebbe un senso, ma
cosě non capisco.
L'handle č un puntatore (puntatore a puntatore) ed č quello che ti serve per
lavorare con i vari componenti, se ci potessi dire cosa devi fare ti
sapremmo aiutare meglio!
--
- Carlo -
c.b...@libero.it

sapremmo aiutare meglio!
L'handle non e' un puntatore.  E' un valore intero che viene gestito
dal sistema.  Il nostro amico vuole probabilmente risalire
all'indirizzo di memoria in cui e' memorizzata l'istanza di un
oggetto, a partire dall'handle.  Non si puo' fare.
Non c'e' equivalenza, in generale, tra handle e puntatori.
--
Andrea Laforgia (ICQ 87230455)
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."


Perdonate la mia poca chiarezza.
Mi spiego meglio:
Ho realizzato un componente che discende dal TDBEdit della VCL;
Ho aggiunto delle mie personali property con relativo property editor, dei
metodi nuovi, ed ho anche aggiunto degli eventi.
Fra le altre cose il componente deve prevedere un evento che si verifichi
quando il componente stesso perde il focus e fra i parametri della chiamata
ci deve essere un puntatore al componente che riceverà il focus.
L'evento OnExit non va bene in quanto questi non mi dà l'oggetto che
riceverà il focus.
Quindi, ne ho creato uno e l'ho chiamato OnLostFocus il cui scopo è quello
di essere attivato quando il componente in questione perde, appunto, il
Focus.
Per far ciò ho dovuto intercettare il messaggio di sistema WM_KILLFOCUS, che
nel WParam contiene proprio l'andle del componente che dovrà ricevere il
focus.
Per poter manipolare a mio piacimento quest'ultimo(l'oggetto che riceverà il
focus), ho bisogno di conoscere il puntatore all'istanza di classe di questo
specifico componente di cui ho solo handle.
Saluti a tutti e grazie per l'interessamento.

[FORSE, MA FORSE FORSE]
Perdi il focus ottieni la posizione del cursore, riempi la struttura POINT,
usi la funzione WindowFromPoint per ottenere un HWND e qui non saprei se č
un handle a finestra quello che cerchi. Il resto č uno scherzetto.

 Non c'e' equivalenza, in generale, tra handle e puntatori.
Esatto.


Carlo, queste cose le sappiamo tutti. Qui non bisogna spiegare ma rispondere
in modo valido ad una domanda.

 in modo valido ad una domanda.
Guarda che questa "spiegazione" non era altro che una precisazione rivolta
ad Andrea Laforgia ... c'è gente che apre thread totalmente off-topic e te
la prendi per un leggerissimo OT? (che poi rientra nell'ambito della
programmazione Win32). Cmq alla domanda hai già dato una risposta, quindi
finchè Michele non dira "non va bene" si può stare tranquilli.
senza polemica.
Saluti


 presto.
No problem! :)




specifico componente di cui ho solo handle.
...non puoi ottenere il puntatore all'oggetto wrapper per un controllo
finestra, a partire dall'handle di quest'ultimo...


intuitivamente mi sembra valida.
Il seminario universitario dovrebbe formalizzare meglio i termini.
Quando si parla di puntatore a puntatore (specie avendo a che fare con
la programmazione C e C++), si indica un VERO puntatore a un VERO
puntatore. 
L'handle, inteso nel modo precedente, non lo e'.
E' semplicemente una "maniglia" associata ad una particolare entita'.
Da tale "maniglia", non e' possibile risalire al puntatore in memoria
a quell'entita'.
