Button-Klicks erkennen?
-
Hi,
wie kann man am besten realisieren, dass eine Zone im Bild als Button definiert wird (z.B. von 10,10 bis 100,100) und wenn dadrauf geklick wird, wie man rausfinden kann, in welchem Button der klick war.
Ich hab das bei mir jetzt so, dass ich mehrere RECTs in einem Array erstellt habe, und bei jedem Klick jedes RECT überprüft wird.
Aber:
Das sieht irgendwie nicht sonderlich Effizient aus...
Außerdem finde ich das recht mühselig für jeden weiteren Button ein neues RECT zu erstellen und zuzuweisen.
Gibts da vielleicht bessere Ansätze?
Mein (Test)Spiel wird voll von Buttons sein...Thx in advance,
TheToast
-
Hi...
Kannste nicht einfach die Window-Messages per WinApi abfangen, und dann bei
WM_LBUTTONDOWN zum Beispiel die Position des Mauszeigers abfragen und dann
überprüfen, ob auf einen Button geklickt wurde?
(Also ich weiß ja jetzt nicht welche Sprache?!?)MFG Aoeke
-
Ja, das ist schon klar, aber ich meine gibts da nicht irgendeine besser funktion, als einfach alle RECTs durchzugehen und die Mausposition mit jedem Punkt des RECTs zu vergleichen?
-
Original erstellt von TheToast:
Ja, das ist schon klar, aber ich meine gibts da nicht irgendeine besser funktion, als einfach alle RECTs durchzugehen und die Mausposition mit jedem Punkt des RECTs zu vergleichen?Teste einfach ob der Mauszeiger links (bzw. rechts, unten, oben) von dem rechten (bzw. linken, oberen, unteren) Rand ist. Dann muss er wohl drin sein.
-
Original erstellt von TGGC:
[quote]Original erstellt von TheToast:
[qb]Ja, das ist schon klar, aber ich meine gibts da nicht irgendeine besser funktion, als einfach alle RECTs durchzugehen und die Mausposition mit jedem Punkt des RECTs zu vergleichen?Teste einfach ob der Mauszeiger links (bzw. rechts, unten, oben) von dem rechten (bzw. linken, oberen, unteren) Rand ist. Dann muss er wohl drin sein.[/QB][/QUOTE]
Das meinte er doch, oder ?
-
Nein, er wollte ja
als einfach alle RECTs durchzugehen und die Mausposition mit jedem Punkt des RECTs zu vergleichen?
ALLE Punkte jedes RECTs checken...
-
Das musst du wohl über dir Rect realisieren. Ich wüsste jetzt nicht wie es sonst gehen sollte.
Angenommen der Nullpunkt ist links Oben.
PSEUDOCODE PSEUDOCODE PSEUDOCODE PSEUDOCODE PSEUDOCODE PSEUDOCODE
typedef struct MYBUTTON { int x; int y; RECT rect; }BUTTON,*pBUTTON; bool ButtonClick(int xpos, int ypos, BUTTON button1) { if(xpos kleiner als ButtonX+ButtonLänge && xpos größer als ButtonX && ypos kleiner als ButtonY+ButtonHöhe && ypos größer als ButtonY); return true; return false; }
PSEUDOCODE PSEUDOCODE PSEUDOCODE PSEUDOCODE PSEUDOCODE PSEUDOCODE
Ich finde so eine ähliche Funktion könntest du verwenden. Auch wenn es hundert Buttons sind
[ Dieser Beitrag wurde am 03.04.2003 um 01:56 Uhr von Netzwerk-Latenz editiert. ]