PDA

Visualizza la versione completa : [c++] Evento legato al mouse fermo


kappa3
02-02-2009, 19:48
Salve a tutti,

E' possibile fare in modo che una volta che il mouse smette di eseguire la MouseMove e quindi si ferma, eseguire un'operazione?
Nel mio caso devo memorizzare in una variabile le coordinate del punto in cui si trova il cursore del mouse nel momento dell'arresto.

Grazie

oregon
02-02-2009, 19:59
In C++?

kappa3
02-02-2009, 20:12
si b visual c++

oregon
02-02-2009, 20:13
E l'evento MouseMove dov'e'? Che tipo di progetto hai creato?

kappa3
02-02-2009, 20:20
Il progetto un' applicazione mfc documento singolo.
E in che senso l'evento MouseMove dov'?

oregon
02-02-2009, 20:29
Se non dici che e' un'applicazione MFC ...

kappa3
02-02-2009, 20:35
Non pensavo fosse cos importante

oregon
02-02-2009, 21:09
Originariamente inviato da kappa3
Non pensavo fosse cos importante

Beh ... esistono tanti di quei modi di scrivere un programma in C++ che, al contrario, mi sembra indispensabile indicare con quali strumenti/librerie/framework si sta lavorando ...

In tutti i casi, non mi sembra ci sia nulla (anche perche' dovremmo decidere che significa "fermo" ... per quanto tempo il mouse non si muove per cui puo' essere definito fermo?) che possa essere utilizzato per il tuo scopo.

L'unica cosa che puoi fare e' utilizzare un timer (magari settato a 2 secondi) che fai ripartire continuamente nella MouseMove ... appena esci dalla MouseMove, dopo 2 secondi il timer scatta per indicarti che almeno da 2 secondi non viene riazzerato ... nell'evento del timer, quindi, puoi avere cosi' determinato che il mouse e' fermo (almeno da 2 secondi).

kappa3
03-02-2009, 13:59
Si avevo letto il tuo consiglio gi in un'altra discussione, il problema che due secondi per me sono troppi, credo che anche 0,2 secondi siano troppi, ho paura del fatto che dato che il tempo a mia disposizione cos breve il timer possa non essere un sistema del tutto efficiente.
Dovrei svolgere delle prove.

Paulin
03-02-2009, 14:13
Molto atipica la tua esigenza.

Ad ogni modo potresti porre la condizione in cui il punto attuale indicato dal mouse uguale a quello immediatamente precedente, il ch significa che il mouse si femato.


void CChildView::OnMouseMove(UINT nFlags, CPoint point)
{
int x = -1;
int y = -1;

if ( point.x = x || point.y = y )
{
// Il mouse insiste sullo stesso punto
}

x = point.x;
y = point.y;

CWnd::OnMouseMove(nFlags, point);
}

Loading