Einen guten Morgen!
Um auf dem Bildschirm einen bestimmten Bereich markieren zu können bräuchte ich eine Unterstützung, da ich nur eine weniger elegante Lösung hinbekomme:
Unelegante Lösung
Select EventWindowID
Case #Window_1 ; Handling #Window_1
Select EventID
case #WM_LBUTTONUP
MausX1 = DesktopMouseX()
case #WM_LBUTTONUP
MausX1 = DesktopMouseX()
.....
endselect
DeltaX = MausX2 -MausX1
Eine elegente Lösung stelle ich mir ungefähr so vor. Eine Lösung, so glaube ich habe ich hier im Forum irgendwo mal gesehen, finde diese aber nicht mehr.
Wenn ich auf die linke Maustaste drücke wird der Startpunkt in einer Variabeln abgelegt und beim Loslassen der linken Maustaste der Entpunkt in einer zweiten Variabeln. Wenn ich nun die rechte Maustaste drücke wird
die Differenz (Ende - Beginn) ermittelt. Mit diesem Ergebnis kann ich dann weiterarbeiten und Funktionen starten die ich brauche.
Danke und auch Grüße an alle im Forum
Martin
Bereich mit Maus markieren
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Hilft dir das weiter?
Code: Alles auswählen
OpenWindow(0,0,0,400,300,"untitled",#WS_OVERLAPPEDWINDOW | 1)
Repeat
EventID = WaitWindowEvent()
If EventID = #WM_LBUTTONDOWN
IX = WindowMouseX(0) : IY = WindowMouseY(0)
EndIf
If EventID = #WM_MOUSEMOVE And EventwParam() = #MK_LBUTTON
MX = WindowMouseX(0) : MY = WindowMouseY(0)
hdc = GetDC_(WindowID(0))
DrawFocusRect_(hdc,frc.RECT)
If ((IX < MX) And (IY > MY))
SetRect_(frc,IX,MY, MX,IY)
ElseIf ((IX > MX) And (IY > MY))
SetRect_(frc,MX, MY, IX,IY)
ElseIf ((IX > MX) And (IY < MY))
SetRect_(frc,MX,IY, IX, MY)
Else
SetRect_(frc,IX,IY,MX,MY)
EndIf
DrawFocusRect_(hdc,frc)
ReleaseDC_(WindowID(0),hdc)
EndIf
Until EventID = 16
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
es gibt bestimmt API funktionen dafür....
ich weiß jetzt nich den fachbegriff, aber das ist ne grundfunktion von win seit ....immer...
also, es müsste ne api-funktion geben, die dir fürs ereignis des mouse-release
die koordinaten der vorher während des tastendrucks beschriebenen bereichs liefert......
MUSS es geben... MUSS!
...weil ohne dem kann man das komplette system nich proggen...
ich weiß jetzt nich den fachbegriff, aber das ist ne grundfunktion von win seit ....immer...
also, es müsste ne api-funktion geben, die dir fürs ereignis des mouse-release
die koordinaten der vorher während des tastendrucks beschriebenen bereichs liefert......
MUSS es geben... MUSS!
...weil ohne dem kann man das komplette system nich proggen...

Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 282
- Registriert: 03.01.2005 11:36
Start Stop
Guten morgen!
Danke für die Hilfe. Mal schauen ob ich mit den Ansätzen weiterkomme.
Martin
Danke für die Hilfe. Mal schauen ob ich mit den Ansätzen weiterkomme.
Martin
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
um es noch mal deutlich zu machen...
natürlich kann man manuell die koordinaten zum zeitpunkt des #WM_LBUTTONDOWN rückspeichern,
und Fluids lösung ist echt praktikabel, wie alle seine beiträge, die ich bisher gelesen habe.
aber da dieses problem ein stinknormales problem ist,
das schon immer seit der entwicklung von windows bestanden hat,
gibt es folgerichtiger weise in der API integriert die rückspeicherung der #WM_LBUTTONDOWN-Koordinaten,
und es muss auch eine funktion geben,
um auf ein #WM_LBUTTONUP adäquat zu reagieren unter einbeziehung eines "Dragframe"
natürlich kann man manuell die koordinaten zum zeitpunkt des #WM_LBUTTONDOWN rückspeichern,
und Fluids lösung ist echt praktikabel, wie alle seine beiträge, die ich bisher gelesen habe.
aber da dieses problem ein stinknormales problem ist,
das schon immer seit der entwicklung von windows bestanden hat,
gibt es folgerichtiger weise in der API integriert die rückspeicherung der #WM_LBUTTONDOWN-Koordinaten,
und es muss auch eine funktion geben,
um auf ein #WM_LBUTTONUP adäquat zu reagieren unter einbeziehung eines "Dragframe"
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 282
- Registriert: 03.01.2005 11:36
Maustaste drücken und loslassen
Danke nochmal an die Helfenden!!!
Ich habe es nun so gemacht und das klappt dann auch so wie ich es brauche.
Ich habe es nun so gemacht und das klappt dann auch so wie ich es brauche.
Code: Alles auswählen
....
Select EventWindowID
Case #Window_1 ; Handling #Window_1
Select EventID
Case #WM_MOUSEMOVE
Fadenkreuz()
Case #WM_LBUTTONDOWN
MausX1 = EventlParam() & $FFFF
Case #WM_LBUTTONUP
MausX2 = EventlParam() & $FFFF
Messwertanalyse()
.....