Newsgroup: it.comp.appl.access
Titolo: Si può simulare evento MouseOutSide finestra?

E qui tornano a rozare le api.
Esiste qualcosa?
Grazie
Daniele 


Spiegati bene...
L'evento Mouse Move applicato ad una Form si attiva solo se il Mouse è
all'interno della stessa, a meno che non sia premuto un Button se non
ricodo male, a quel punto il Move rimane attivo e le coordinate
relative diventano negative o maggiori delle dimensioni della Form...
Prima devi conoscere le dimensioni della Form in Pixels:
Private Declare Function GetWindowRect Lib "user32" _
(ByVal hWnd 	As Long, _
lpRect 		As RECT) As Long
Se vuoi invece sapere quando il mouse è fuori dalla tua Form allora
devi gestire la sua posizione magari su Timer... leggerne le coordinate
(si con le API)
Declare Function GetCursorPos Lib "user32" _
Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
e ricavare le coordinate relative riferite alla tua Form usando
Declare Function ClientToScreen Lib "user32" _
Alias "ClientToScreen" _
(ByVal hwnd As Long, _
lpPoint As POINTAPI) As Long
Riassumendo...
Leggi le dimensioni della Form(nella VarType RECT) su Load, e su Timer
leggi la posizione X,Y del Cursore con la VarType POINTAPI(X,Y) le
passi alla ClietToScreen e vedi se sono maggiori della dimensione
della Form che hai ricavato all'inizio...
Semplicissimo.
@Alex

 Daniele
Spiegati bene...
L'evento Mouse Move applicato ad una Form si attiva solo se il Mouse �
all'interno della stessa, a meno che non sia premuto un Button se non
ricodo male, a quel punto il Move rimane attivo e le coordinate
relative diventano negative o maggiori delle dimensioni della Form...
Prima devi conoscere le dimensioni della Form in Pixels:
Private Declare Function GetWindowRect Lib "user32" _
(ByVal hWnd As Long, _
lpRect As RECT) As Long
Se vuoi invece sapere quando il mouse � fuori dalla tua Form allora
devi gestire la sua posizione magari su Timer... leggerne le coordinate
(si con le API)
Declare Function GetCursorPos Lib "user32" _
Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
e ricavare le coordinate relative riferite alla tua Form usando
Declare Function ClientToScreen Lib "user32" _
Alias "ClientToScreen" _
(ByVal hwnd As Long, _
lpPoint As POINTAPI) As Long
Riassumendo...
Leggi le dimensioni della Form(nella VarType RECT) su Load, e su Timer
leggi la posizione X,Y del Cursore con la VarType POINTAPI(X,Y) le
passi alla ClietToScreen e vedi se sono maggiori della dimensione
della Form che hai ricavato all'inizio...
Semplicissimo.
@Alex
Chiarissimo grazie!
L'unico problema � che diventa l'ennesimo timer da gestire e con il rischio 
di overhead e blocchi improvvisi
Non vorrei abusare dei timer e dei DoEvents (non so se ricordi qualche post 
fa)
A meno che hai un'alternativa al Timer.
Grazie
Daniele

 Daniele
@Alex

 Daniele
@Alex
La finestra che deve intercettare MouseOutSide � PopUp
Non ho strumenti per generare DLL
Quindi l'unica alternativa � alzare il timer ad un  livello pi� 
"empiricamente" pi� sicuro.
Grazie 

 Grazie
La DLL la trovi già fatta in rete, ce ne sono a bizzeffe fatte da
sviluppatori VB6/VBA... quindi quello sarebbe il minimo...
Per il resto a mio avviso per semplicità di manutenzione è meglio
usare il Timer...
@Alex

 Grazie
La DLL la trovi gi� fatta in rete, ce ne sono a bizzeffe fatte da
sviluppatori VB6/VBA... quindi quello sarebbe il minimo...
Per il resto a mio avviso per semplicit� di manutenzione � meglio
usare il Timer...
@Alex
Alla fine gli abbellimenti possono diventare pi� pesanti dell'obiettivo 
prefissato
Grazie ancora
Daniele