Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Mysz w C++

Ostatnio zmodyfikowano 2011-05-07 00:12
Autor Wiadomość
DVD93
Temat założony przez niniejszego użytkownika
Mysz w C++
» 2011-05-05 21:56:01
Witam mam pytanie czy ktoś wie może jak włączyć obsługę myszy w konsoli za pomocą bibliotek windows.h?
Wiem ,że w ncurses działa masz ale niestety nie mogę użyć tej biblioteki, gdyż w szkolnych komputerach jej nie ma ,a ściągnąć dodatkowych z neta nie możemy.

Z góry dziękuje za pomoc ;)
P-32717
szyx_yankez
» 2011-05-05 22:46:38
Pobieranie pozycji kursora - GetCursorPos();
Example:
C/C++
#include <cstdio>
#include <windows.h>

int main()
{
    POINT pos;
    while( true )
    {
        GetCursorPos( & pos );
        printf( "x=%d y=%d\n", pos.x, pos.y );
        if( pos.x < 10 ) break;
       
    }
}
P-32719
DVD93
Temat założony przez niniejszego użytkownika
» 2011-05-05 22:50:43
Dzięki ale chodziło mi o to ,że jak kliknę sobie w jakieś miejsce to coś się stanie ;)
P-32721
szyx_yankez
» 2011-05-05 23:03:25
Pobieranie stanu przycisków myszy - GetKeyState().
Example:
C/C++
#include <cstdio>
#include <windows.h>

int main()
{
   
    while( true )
    {
        if( HIBYTE( GetKeyState( VK_LBUTTON ) ) )
        printf( "Lewy przycisk myszy\n" ); else
        if( HIBYTE( GetKeyState( VK_RBUTTON ) ) )
        printf( "Prawy przycisk myszy\n" ); else
        if( HIBYTE( GetKeyState( VK_MBUTTON ) ) )
             printf( "Srodkowy przycisk myszy\n" ); else
        printf( "...." );
    }
}
P-32723
DVD93
Temat założony przez niniejszego użytkownika
» 2011-05-05 23:12:55
Wielkie dzięki za pomoc :D przerobie sobie ten algorytm żeby wykonywał akcje tylko w konkretnych miejscach i będzie miód cud malina :D jeszcze raz wielkie dzięki ;)  
P-32726
DVD93
Temat założony przez niniejszego użytkownika
» 2011-05-05 23:35:28
Mam jeszcze tylko jedno pytanie dlaczego jak kliknę myszką to ten komunikat pokazuje mi się setki raz zamiast raz?
P-32727
McAffey
» 2011-05-06 00:23:09
Ponieważ on nie nalicza  pojedynczych kliknięć, tylko sprawdza czy dany klawisz jest wciśnięty/nie. A jak ty klikasz "raz" to przez ten czas komputer i tak zdąża sprawdzić ten stan setki razy. Jak przytrzymasz dłużej wciśnięty przycisk, to komunikatów będzie jeszcze więcej. Jakbyś chciał aby powiadamiał dopiero po "pełnym" kliknięciu (kliknięcie i puszczenie) to byś musiał to obrać jakoś tak :

C/C++
#include <cstdio>
#include <windows.h>

int main()
{
    bool kliknie_myszka = false;
    int mysz = 0;
   
    while( true )
    {
        if( HIBYTE( GetKeyState( VK_LBUTTON ) ) ) mysz = 1;
        else mysz = 0;
       
        if( mysz == 1 ) kliknie_myszka = true;
       
        if( mysz == 0 )
        {
            if( kliknie_myszka == true )
            {
                printf( "Lewy przycisk myszy\n" );
                kliknie_myszka = false;
            }
        }
    }
}

I analogicznie dla pozostałych klawiszy ;)
P-32728
dmx81
» 2011-05-06 00:27:37
Komunikat pokazuje sie podczas wcisnietego klawisza? Jesli tak, to pewnie dlatego, ze podczas klikniecia twoj program wykunuje iles tam razy(zalezy od szybkosci procesora) wiec tyle razy zostaje zbadany stan klawisza, tyle razy zostaje wyswietlony komunikat.
Jesli chcesz to ograniczyc, wprowadz zmienna typu bool, ktora po wcisnieciu klawisza ustawi sie na TRUE, a komunikat niech sie wyswietla, tylko jesli klawisz wcisniety, a zmienna jest FALSE. oczywiscie poprawnie bedzie w tym przypadku ustawiac ta zmienna na false, jesli klawisz nie wcisniety, a zmienna ustawiona na TRUE, co bedzie znakiem, ze zostalo wykonane tzn ReleaseKeyEvent (a poprzednie zdarzenie to PressKeyEvent - tak z angielskiego ;) )
mam nadzieje, ze napisalem w miare jasno, kodu nie bede pisal, bo to prosta sprawa, wiec zachecam do samodzielnej pracy i ogloszenia swiatu swoich wynikow:)


PS>> no ladnie, ubiegles mnie odpowiedzia :) tzn napisalem wczesniej, ale nie wiem jakim cudem sie nie wyslalo... a kiedy po paru minutach zobaczylem, ze mam wciaz w jednej z zakladek "Edycja wiadomosci", wyslalem ... ale juz byla odpowiedz ;)
P-32730
« 1 » 2 3
  Strona 1 z 3 Następna strona