Newsgroup: it.comp.programmare.win32
Titolo: WindowFromPoint

Programmo in Borland c++ Builder e ho bisogno di ottenere l'handle di una
finestra che non fa parte della mia applicazione. Pensavo di fare cosě: con
GetCursorPos ottenere le coordinate dal mouse e con WindowFromPoint ottenere
l'handle della finestra in quelle coordinate. Solo che la suddetta funzione
č void, quindi non so come ottenere il parametro.
Grazie anticipatamente

 è void, quindi non so come ottenere il parametro.
Nessuna delle due funzioni da te citate è Void, GetCursorPos restituisce un
BOOL e modifica la struttura POINT passatale per riferimento,
WindowFromPoint restituisce *proprio* l'HWND della finestra a partire dalle
coordinate!
--
- Carlo -
c.b...@libero.it

 wrote in message
vot%5.132832$hk4.4...@news.infostrada.it...


Come mai?
Il compilatore, presumibilmente, ti dice che non puo' convertire
(void*) in (AnsiString) e il senso e' chiaro.
La proprieta' Text di TEdit e' un AnsiString che non puo',
chiaramente, accettare un puntatore di quel tipo.
HWND e' un HANDLE a tutti gli effetti, quindi un puntatore a void.
Per cui e' come se, a tutti gli effetti il prototipo di
WindowFromPoint fosse :
void *WindowFromPoint(... 
Devi scrivere :
Edit1->Text = IntToStr( (unsigned)WindowFromPoint( p ) ) ;
--
Andrea Laforgia (ICQ 87230455)
http://www.geocities.com/AndreaLaforgia
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."

coordinate!
HWND viene definito in C++ Builder come void* quindi la funzione in
questione ha valore di ritorno puntatore a void.


 questione ha valore di ritorno puntatore a void.
HWND WindowFromPoint(
    POINT Point  // structure with point
);
Return Values:
If the function succeeds, the return value is the handle of the window that
contains the point. If no window exists at the given point, the return value
is NULL
Non mi interessa come C++ Builder definisca HWND, quella è la dichiarazione
della funzione quindi la stessa NON è Void, punto e basta!


 della funzione quindi la stessa NON è Void, punto e basta!
Infatti è void *, sono due cose ben distinte... e ricorda che se non
ritornasse un puntatore, non potrebbe mai ritornare NULL. Quindi sicuramente
l'HWND è un qualche tipo di puntatore, non pensi ? :-)
Massimo

 della funzione quindi la stessa NON è Void, punto e basta!
invece di parlare, perchè non ti guardi gli headers?
io l'ho fatto (ho preso i primi che ho trovato, mi sembra quelli di
lcc-win32) e ho trovato che HWND è un typedef HANDLE
ho cercato la definizione di HANDLE e ho trovato:
typedef void *HANDLE;
risultato:
HWND == HANDLE == puntatore a void
--
ciao
..::[xaero]::..

della funzione quindi la stessa NON è Void, punto e basta!
Invece ti DEVE interessare se rispondi a un messaggio in cui si cita
espressamente l'uso di queste funzioni con il C++ Builder.
Quando la smetterai di aprire bocca su argomenti che non conosci ?
A parte il fatto che in C++ non esiste "Void", ma "void" (i linguaggi
C e C++ sono "case sensitive"), ti ripeto per la seconda volta che il
tipo HWND e' definito negli header windows distribuiti con C++ Builder
come HANDLE (tramite la macro DECLARE_HANDLE), a sua volta definito
come puntatore a void, per cui il valore di ritorno E' DEL TUTTO
EQUIVALENTE a void*.
Non ti insospettisce il warning (benche' citato in modo errato dal
nostro amico) dato dal compilatore ?
A gia', dimenticavo che non conosci il C e il C++ e i relativi
compilatori, nonostante ti ostini a rispondere su questi argomenti.


 wrote in message
usn04tcfbqk80vfme...@4ax.com...
