Seite 1 von 7

Abfrage des Mausklicks

Verfasst: 20.07.2006 20:16
von GreyEnt
Hallo.

Mein neues Dauerprojekt ist ein CAD Programm zu erstellen.
Oder ein Tool mit dem man CAD Daten einlesen und manipulieren/auswerten kann.
(Bitte nicht lachen, ich weiss selber das daraus kein AutoCAD wird. :) )
Es soll ja auch erst fertig werden wenn ich in Rente gehe.

Bin nicht gerade ein Meister in programmieren. Hier meine erste frage.:

Wie kann ich feststellen ob die linke Maustaste gedrückt wurde?
Hab hier von GetAsyncKeyState_(#vk_lbutton) gelesen.
Aber wie fragt man das ab?
Meine Problem beschreibung.
Ich klicke auf ein Gadget "Neue Linie" dann in den Zeichnungsbereich.
und nun solte abgefragt werden ob die Taste gedrückt wurde. Damit man den Startpunkt der linie definiert. beim 2ten klick in den Zeichnungsbereich definiert man den Endpunkt der Linie.
Wie kann man abfragen ob man in den Zeichnungsbereich geklickt hat. Oder gerade ein anderes Fenster z.B. den Debugger aus dem Weg räumt?

Ich hoffe ich mach mich nicht allzu lächerlich.

MfG
Dieter

die maus

Verfasst: 20.07.2006 20:27
von Brügge
hi

also bei der maus gibt es 2 möglichkeiten:

1:
InitMouse()
ExamineMouse()
if mousebutton(1)
<---dein befehl : (das was passieren soll)
endif

bei dieser art gibt es 1problem: wenn das in einer schleife ist dann denkt er du drückst die maus 1000 mal

2:
InitMouse()
ExamineMouse()
if mousebutton(1)
if druck1 = 0
<---dein befehl : (das was passieren soll)
endif
druck1 = 1
else
druck1 = 0
endif

dies ist der beste weg das zu machen





mfg brügge

Verfasst: 20.07.2006 20:43
von Brügge
achja.... du willst ja einen punkt setzen ^^


also so:
initmouse()


anfang deiner schleife:
ExamineMouse()


If MouseButton(1)
If druck1 = 0
x1 = mousex()
y1 = mousey()
EndIf
druck1 = 1
Else
if druck1 = 1
x2 = mousex()
y2 = mousey()
endif
druck1 = 0
EndIf

;so wenn du jetzt drückst dann wird in x1 und y1 der erste punkt festgelegt. beim loslassen der zweite in x2 y2.



ende deiner schleife


mfg Brügge

Verfasst: 20.07.2006 20:53
von Falko
Ich glaube hier ist eventuell ein passendes Beispiel mittels Api:

http://www.purebasic.fr/english/viewtop ... 773#132773

Grüße Falko

Wow. Kaum gefragt schon antworten da.

Verfasst: 20.07.2006 21:10
von GreyEnt
Vielen Dank an euch.
wenn ich den befehl examinemouse() setze kommt eine Meldung.
das ich zuerst openscreen() setzen muss.

Bislang habe ich nur ein OpenWindow() ist klar für das Zeichenfenster.
und die Zeichenbefehle mit Startdrawing(windowoutput())

wie kann ich nun openscreen() einsetzen?

MfG
Dieter

Verfasst: 20.07.2006 21:12
von Brügge
OpenScreen(breite,höhe,bit, "name")

Verfasst: 20.07.2006 21:13
von Brügge
achja wenn du eine linie zeichnest dann geht es jetzt so:



startdrawing(ScreenOutput())

Verfasst: 20.07.2006 21:15
von Falko
Im Zusammenhang mit OpenWindow() kannst du ja ein
OpenWindowedScreen(WindowID... nehmen. Steht gut beschrieben
in der PB - Hilfe, wenn du das PB-Beispiel dazu anschaust.

Grüße Falko

hallo Brügge

Verfasst: 20.07.2006 21:17
von GreyEnt
den openScreen vor den openwindow ?

MfG
Dieter

Verfasst: 20.07.2006 21:19
von Falko
Nee, danach, weil du die WindowID() davon brauchst. :wink:

Code: Alles auswählen

OpenWindow(0,100,100,400,400,"Aktuelles Fenster")
ouputID.l=OpenWindowedScreen(WindowID(0)....)

;usw.