Abfrage des Mausklicks

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
GreyEnt
Beiträge: 376
Registriert: 20.07.2006 19:41

Abfrage des Mausklicks

Beitrag 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
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

die maus

Beitrag 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
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag 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
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Ich glaube hier ist eventuell ein passendes Beispiel mittels Api:

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

Grüße Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
GreyEnt
Beiträge: 376
Registriert: 20.07.2006 19:41

Wow. Kaum gefragt schon antworten da.

Beitrag 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
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

OpenScreen(breite,höhe,bit, "name")
Brügge
Beiträge: 359
Registriert: 28.05.2006 16:40
Wohnort: Rheine

Beitrag von Brügge »

achja wenn du eine linie zeichnest dann geht es jetzt so:



startdrawing(ScreenOutput())
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag 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
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
GreyEnt
Beiträge: 376
Registriert: 20.07.2006 19:41

hallo Brügge

Beitrag von GreyEnt »

den openScreen vor den openwindow ?

MfG
Dieter
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag 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.
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten