Oppure

Loading
03/05/10 14:17
MagoDelC++
salve a tutti ora vi mostro il mio problema sperando che troviate l'errore! allora cercando su internet ho trovato un codice in c++ che mostrava tutte le coordinate del mouse quando si muoveva! allora ho pensato di registrare queste posizioni in un array per poi ripeterle usando le adeguate funzioni! in pratica il mio scopo e registrare i movimenti del mouse e quando il mouse ha coordinata di x=0 di interrompere e di rifare i movimenti che ho fatto! ma il problema e che il codice mi sembra giusto però non funziona!

ecco il codice!
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
    int x,y,p,o,a;
    double q,w;
    float mousex[500];
    float mousey[500];
    POINT mouse, old_mouse;
    old_mouse = mouse;

    while(mouse.x!=0)
    {
        for(a=0;a!=500;a++)
          {
                if (!GetCursorPos(&mouse));
                if (mouse.x != old_mouse.x || mouse.y != old_mouse.y)

                mousex[a]=mouse.x;
                mousey[a]=mouse.y;

                old_mouse = mouse;
          }
    }


    for(a=0;a!=500;a++)
          {
                q=mousex[a];
                w=mousey[a];
                _sleep(1000);
                cout<<q<<"  "<<w;
                SetCursorPos(q, w);

          }

return 0;
}
aaa
03/05/10 17:11
HeDo

cosa intendi per "non funziona"?

che errore da? non compila? compila ma non fa quello che dovrebbe?
aaa
03/05/10 17:37
MagoDelC++
si compila... però quando deve rifare le coordinate lette le fa a caso!! e più o meno utilizza sempre gli stessi numeri come coordinate! tipo quando nn inizzializzi qualcosa!
Ultima modifica effettuata da MagoDelC++ 03/05/10 17:38
aaa
03/05/10 18:30
HeDo

hai fatto un giro strano senza senso.
perchè memorizzare le coordinate in due vettori di float se sono coordinate intere?

manca la funzione di temporizzazione nella fase di acquisizione, perchè controllare se il mouse si è spostato? e nel caso non si sia spostato NON memorizzare le coordinate?

se il tuo intento è riprodurre i movimenti del mouse, se rimane fermo in un posto per qualche tempo dovresti riprodurre anche questa cosa.

e poi perchè solo 500 campioni? non sarebbe meglio implementare un lista e scegliere di fermare il recording e poi scegliere quando iniziare il playing della traiettoria?

che senso ha la condizione mouse.x != 0? sai che l'origine (0,0) dello schermo è il pixel più in altro a sinistra?

ci sono un po di cose che non vanno...


aaa
09/05/10 9:45
NickoMaiden
una delle prime cose che mi salta all'occhio è il secondo if dentro il for.
se non metti le graffe succede che l'if vale solo per la prima istruzione mentre le altre vengono eseguite comunque.
per il resto...dovendo memorizzare un numero indefinito di posizioni, non sarebbe meglio usare le liste concatenate semplici invece che un vettore?
edit: hedo non avevo visto il tuo post
Ultima modifica effettuata da NickoMaiden 09/05/10 9:46
aaa
17/05/10 17:29
MagoDelC++
ok grazie per i consigli ora il programma funziona! (non uso liste concatenate perchè non so come si fa e non riesco a capirle)!
ora oltre che a registrare volevo sapere come fare a sapere anche come registrare i click del mouse! ho cercato un po in giro ma è troppo complicato parlano tutti di funzioni strane di windows! c'e qualche comando semplice per regisrare quando io clikko oltre che a quando mi muovo?

questo è il codice che registra:

#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
    int a,q,w,r,t=0;
    int mousex[50000];
    int mousey[50000];

    POINT mouse;



do{
        for(a=0; a!=50000; a++)
        {
        if (!GetCursorPos(&mouse)) return -1;
        _sleep(10);
        mousex[a]=mouse.x;
        mousey[a]=mouse.y;
        cout << "X: " << mouse.x << " - Y: " << mouse.y << endl;
        if(mouse.x==0 && mouse.y==0)
        {break;}
        t++;
        }
}while(mouse.x!=0 && mouse.y!=0);


    for(r=0;r!=t;r++)
          {

              _sleep(10);
                      cout << "X: " <<mousex[r]<< " - Y: " << mousey[r] << endl;
                SetCursorPos(mousex[r], mousey[r]);
          }

    return 0;
}
aaa
17/05/10 19:27
HeDo
Postato originariamente da MagoDelC++:

ok grazie per i consigli ora il programma funziona! (non uso liste concatenate perchè non so come si fa e non riesco a capirle)!
ora oltre che a registrare volevo sapere come fare a sapere anche come registrare i click del mouse! ho cercato un po in giro ma è troppo complicato parlano tutti di funzioni strane di windows! c'e qualche comando semplice per regisrare quando io clikko oltre che a quando mi muovo?



"funzioni strane di windows"? cioè le API?

e ho notato solo ora, il tuo nick è "MagoDelC++". Ma non ti vergogni a mettere un nome del genere? Ma chi ti credi di essere? E se sei tanto "mago del c++" perchè sei qui a postare domande idiote? io rimango allibito davanti a tanta bimbominchiaggine...

avevo una vaga voglia di dirti come si faceva, ma mi è del tutto passata.

per dovere di cronaca, se dipendesse da me, ti bannerei all'istante.
aaa
17/05/10 20:37
MagoDelC++
ahahah! :D :k:
si si lo so che si usavano le api solo che nn avevo voglia di dilungarmi a spiegare che ero incapace a usarle! e sinceramente volevo sapere se c'era un modo piu semplice!
mi sono chiamato cosi nn perchè mi credo bravo! ahhaha figurati ma perchè VORREI essere un mago del c++! :)
so di essere all'inizio!!
dai dammi almeno un aiutino!! per piacere!!! ;)
aaa