Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 01:40

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C++ Mouse Position Problem

Discussion on C++ Mouse Position Problem within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Aug 2010
Posts: 199
Received Thanks: 29
C++ Mouse Position Problem

Hey Leute, ich bräuchte mal wieder eure Hilfe...
ich hab nen Code, der erkennt wo die maus ist, und den x&y wert ausgibt.
klappt auch ganz gut.
wollte jetzt so umschreiben, dass er wenn er an einer bestimmten Position steht und linksklick macht, eine Funktion ausführt. Leider (egal wo ich klicke) führt er nur die Erste Funktion aus... =(

Das Programm funktioniert ansonsten einwandfrei, alles nach plan, bis auf wenn ich mit der Maus agiere, immer nur die erste fkt ausgeführt wird.
Hab sogar probiert, ir.Event.MouseEvent.dwMousePosition.X == 32 zu schreiben, anstatt einem =

PS: ist ne konsolenanwendung und mit microsoft c++ 2010 express erstellt

Danke schonmal

Edit: Achja, ich hab natürlich alles includiert
es ist nix rot unterstrichen
steht im code oben aber nicht dran
Dromerace is offline  
Old 01/26/2013, 22:38   #2

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
Welche erste Funktion meinst du?

Ansonsten:

if((ir.Event.MouseEvent.dwMousePosition.X = 32) & (ir.Event.MouseEvent.dwMousePosition.Y = 280) usw)

-> Vergleiche müssen mit == gemacht werden, das und, das du meinst, macht man mit &&, so ist das ein logischer AND-Operator & den brauchst du da nicht.
snow is offline  
Thanks
1 User
Old 01/26/2013, 22:47   #3
 
elite*gold: 0
Join Date: Aug 2010
Posts: 199
Received Thanks: 29
Code:
if((ir.Event.MouseEvent.dwMousePosition.X = 32) & (ir.Event.MouseEvent.dwMousePosition.Y = 280) & ir.Event.MouseEvent.dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED)
				{
					system("cls");
					cout << "Unendlich versuche wurden gewaehlt" << endl;		
				max_versuche = 1000;
					ZahlenRaten();
die funktion meine ich, habs grade so gemacht wie du gesagt hast, jz ewrkennt er die maus aber nichtmehr und führt garnichts aus -.-
also so stehts jetz bei mir da :
Code:
if((ir.Event.MouseEvent.dwMousePosition.X = 32) & (ir.Event.MouseEvent.dwMousePosition.Y = 280) & (ir.Event.MouseEvent.dwButtonState) & (FROM_LEFT_1ST_BUTTON_PRESSED))
Dromerace is offline  
Old 01/26/2013, 22:56   #4
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Versuch && und nicht &. && ist ein logisches und, & ist ein binäres und.
Nightblizard is offline  
Thanks
1 User
Old 01/26/2013, 22:58   #5
 
elite*gold: 0
Join Date: Aug 2010
Posts: 199
Received Thanks: 29
ich hab schon alles probiert, sogar == und ||(ist falsch, ich weiß) auch hab ich mal kleine klammern mal mehr etc.
Daran liegts sicher nicht
Aber trzdm danke

immo siehts so aus:
Dromerace is offline  
Thanks
1 User
Old 01/26/2013, 23:03   #6

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
if((ir.Event.MouseEvent.dwMousePosition.X == 32) && (ir.Event.MouseEvent.dwMousePosition.Y == 280) && (ir.Event.MouseEvent.dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED))

^so probiert?

Das Problem: Wenn die Bedingung der if-Schleife erfüllt ist, springt das Programm da rein und führt die Funktion aus. Bisher wurde die Bedingung wohl immer erfüllt. Mit dem Code am Anfang meines Posts sollte es nur gehen, falls x ==32, y == 280 && die Maustaste gedrückt ist / wird.
snow is offline  
Thanks
1 User
Old 01/26/2013, 23:10   #7
 
elite*gold: 0
Join Date: Aug 2010
Posts: 199
Received Thanks: 29
erkennt jetzt die maus nicht bzw. reagiert nicht drauf
Dromerace is offline  
Old 01/26/2013, 23:59   #8
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Selbstverständlich liegt das (auch) am &&! & macht etwas ganz anderes...
Nightblizard is offline  
Thanks
1 User
Old 01/27/2013, 02:20   #9


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
Originally Posted by snow911 View Post
Das Problem: Wenn die Bedingung der if-Schleife erfüllt ist


Quote:
Selbstverständlich liegt das (auch) am &&! & macht etwas ganz anderes...
Ist zwar theoretisch richtig, praktisch ergibt es aber (fast) dasselbe.
Wenn ich die Ergebnisse von boolschen Ausdrücken binär &-verknüpfe, kommt halt ne binäre Zahl raus, die dieselbe Wahrheitstabelle wie das logische && hat und wird dann als Abfragewert für das if verwendet ;O
Der Unterschied liegt allerdings natürlich darin, dass & kein short-circuit-Operator ist.

Problematischer ist da wohl das einfache =. Für Vergleiche wird == verwendet!
MrSm!th is offline  
Thanks
1 User
Old 01/27/2013, 02:24   #10
 
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
Quote:
Originally Posted by Dromerace View Post
erkennt jetzt die maus nicht bzw. reagiert nicht drauf
evtl liegt es einfach daran das du mti der maus einfach nicht die koordinaten (32,280) triffst?
du könntest am ende ein
Code:
else
{
std::cout << "Position: X=" << ir.Event.MouseEvent.dwMousePosition.X<< " Y=" << ir.Event.MouseEvent.dwMousePosition.Y << std::endl;
}
einfügen um zu überprüfen ob die mausposition richtig war.

Quote:
Originally Posted by Nightblizard View Post
Selbstverständlich liegt das (auch) am &&! & macht etwas ganz anderes...
in dem beispiel von snow911 sehe ich keine fehler.
nkkk is offline  
Thanks
1 User
Old 01/27/2013, 02:57   #11

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
Quote:
Originally Posted by MrSm!th View Post
Werde ich Mittwoch meinem Dozenten um die Ohren hauen.
Aber okay, der erklärt auch, dass nach dem Call die Parameter gepusht werden..

@nkkk: Ich glaube, Nightblizard meinte auch Dromeraces Code.

Aber das mit dem std::cout der Koordinaten ist eine gute Idee, das ist sicher nen Versuch wert.
snow is offline  
Thanks
1 User
Old 01/27/2013, 03:12   #12


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
Werde ich Mittwoch meinem Dozenten um die Ohren hauen.
Exmatrikulieren!
MrSm!th is offline  
Thanks
2 Users
Old 01/27/2013, 13:09   #13
 
elite*gold: 0
Join Date: Aug 2010
Posts: 199
Received Thanks: 29
Ich hab jetzt den Fehler gefunden, weis aber irgendiwe nur nicht, durch was er hervorgerufen wird oder wie ich ihn beheben kann.
Hab ich jetzt eingefügt:
Code:
else if((ir.Event.MouseEvent.dwMousePosition.X = 3) && (ir.Event.MouseEvent.dwMousePosition.Y = 280))
				{
				cout << "Position: X=" << ir.Event.MouseEvent.dwMousePosition.X << " Y=" << ir.Event.MouseEvent.dwMousePosition.Y<< endl;
				}
und EGAL! wo die maus ist, es wird ausgegeben: x=3 und y=280, da es wahrscheinlich kein änderbarer wert ist, kann ich das iwie ändern?
Dromerace is offline  
Old 01/27/2013, 13:13   #14
 
.SkyneT.'s Avatar
 
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 786
Also ich bin mir ziemlich sicher das du nicht nur auf einen einzigen Pixel am
Bildschirm klicken willst...

Du wirst erst einen "Bereich" aussuchen müssen wohin
du klicken willst.

Dafür würde sich eine kleine Struktur eignen:
Code:
struct _rectangle
{
   int x;
   int y;
   int rx;
   int ry;
};
(oder RECT aus windows.h)

Die position der Maus würde ich mit GetCursorPos() bestimmen.
Zu verwenden ist das so:
Code:
#include <windows.h>
//.....
POINT pCursorPos;
GetCursorPos(&pCursorPos);
Danach solltest du dir eine Funktion schreiben, so in
etwa würde ich den Prototyp wählen:
Code:
bool isPointInRect (_rectangle Area, POINT Point);
Letztendlich kannst du mit dem ganzen Zeug dann
bestimmen ob dein geklickter Punkt in einem
bestimmten Bereich liegt, und je nach dem eine
Funktion ausführen.
Code:
if (GetAsyncKeyState(VK_LBUTTON) && isPointInRect(Area, Point))
{
    //DoStuff
}
.SkyneT. is offline  
Thanks
1 User
Old 01/27/2013, 14:07   #15



 
+Yazzn's Avatar
 
elite*gold: 420
Join Date: Jan 2012
Posts: 1,030
Received Thanks: 981
Quote:
Originally Posted by Dromerace View Post
Code:
else if((ir.Event.MouseEvent.dwMousePosition.X = 3) && (ir.Event.MouseEvent.dwMousePosition.Y = 280))
				{
				cout << "Position: X=" << ir.Event.MouseEvent.dwMousePosition.X << " Y=" << ir.Event.MouseEvent.dwMousePosition.Y<< endl;
				}
und EGAL! wo die maus ist, es wird ausgegeben: x=3 und y=280, da es wahrscheinlich kein änderbarer wert ist, kann ich das iwie ändern?
Dazu ist nicht viel mehr zu sagen als
Quote:
Originally Posted by MrSm!th View Post
Problematischer ist da wohl das einfache =. Für Vergleiche wird == verwendet!
+Yazzn is online now  
Thanks
1 User
Reply


Similar Threads Similar Threads
USB Mouse Problem
01/05/2012 - Technical Support - 6 Replies
Hi Leute. Ich habe mir heute dir Cyborg R.A.T. 7 gekauft als ich sie in den USB Port angeschlossen habe ging ja noch alles ich konnte sie bewegen usw. Aber beim treiber instalieren wurde sie nicht erkannt sie wird nierentswo erkannt ich kann mit ihr klicken sie bewegen nimmt der PC alles an aber treiber instalieren geht nicht.. Hilfe währe sehr nett ;) MFG
mouse problem :S
12/10/2011 - Main - 5 Replies
hallo epvpers com, ich habe ein problem,undzwar folgendes:Meine linke Maustaste macht ab und an einen Doppelklick obwohl ich nur 1mal drücke,das behindert mich manchmal beim spielen und ich habe nachteile dadurch.Muss ich irgendetwas bei den Einstellungen ändern(wenn ja:wo?) oder ist etwas kaputt an meiner Maus.Meine Maus ist per Kabel an meinem Pc angebracht. Danke an alle antworten. grüße leagueoflolz
Neue Waffen Problem (Position)
04/22/2010 - Metin2 Private Server - 0 Replies
Hallöle @all Heut' habe ich mir etwas Zeit für neue Waffen genommen. Wenn die vollständig geworden sind, exportierte ich die in .gr2 Format... nachdem ich mich inGame eingeloggt habe, sah ich das die Waffe nicht in der Hand sitzt sondern im Luft schwebt Ich habe dann ein Schwert +0 genommen und meine Waffe auf gleiche Position gesetzt. Trotzdem hat es nicht's gebracht :(... auch nur die Klinge habe ich ersetzt... gescheitert! Kann jemand mir etwas helfen? :confused:
[C#]Simple Program For Getting Mouse Position
06/06/2009 - CO2 Programming - 1 Replies
I just thought i'd release this simple program i put together it's useful for making bots in autoit and autohotkey etc. Just makes finding the X and Y co-ords simple. Download Cursor Position
[Request]AutoIt3 Capture mouse position in a variable?
01/17/2008 - Tutorials - 1 Replies
I'm trying to make a small simple to use botting program and I noticed the mouse click command needs coordinates. I looked thru the list of functions etc. Couldent find a way to store your current mouse position into a variable of X and Y **Or something like that** so I figured I would come to the forum and ask if anyone knows a way how?



All times are GMT +2. The time now is 01:40.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.