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 ;) |
|
szyx_yankez |
» 2011-05-05 22:46:38 Pobieranie pozycji kursora - GetCursorPos();
Example:
#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; } } |
|
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 ;) |
|
szyx_yankez |
» 2011-05-05 23:03:25 Pobieranie stanu przycisków myszy - GetKeyState().
Example:
#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( "...." ); } }
|
|
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 ;) |
|
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? |
|
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 : #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 ;) |
|
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 ;) |
|
« 1 » 2 3 |