Autor | Thema: &LParam | | Datum:22.07.02 18:40 
(Kerzenlicht@chello.at) | |
Hallo Profan Forum
&LParam gibt nehm ich mal an die Mausposition an. Nur kann ich mit den Zahlen nichts anfangen. Wie kann ich das umrechnen?
Ich weiß es gibt auch %MouseY und %MouseY. Die funktionieren aber nur im Hauptfenster. Will aber die Cursorposition in einem Fenster mit @CreateWindow auslesen.
Wer weiß da weiter
Mfg Thomas Ungerböck
|
| | Datum:22.07.02 22:30 
(carlo.keil@web.de) | |
Hallo Thomas,
den folgenden Quelltext habe ich vor längerem in einem anderen Zusammenhang in die Liste gestellt, aber er dürfte dir auch helfen.
Ich empfehle die Variable "Mausposition#" deiner besonderen Aufmerksamkeit.
HTH
Carlo
'Dieses Programm ist die erweiterte Version eines Programms von René Bühling,
'das er dankenswerterWeise auf seiner Homepage
'http://www.rene-buehling-multimedia.de
'der Profangemeinde zur Verfügung stellt.
'
'Ergänzt wurde hier die Abfrage der Mausposition und ihre Auswertung
'für eine Anwendung.
'Ausserdem wurde die Ausgabe etwas modifiziert.
'----------------------------------------------------------------------------
WindowTitle "Maus bewegen und klicken"
Window 0, 0 - 700, 480
SetTruecolor 1
Decimals 0
Def %wm_MouseMove $0200
Def %wm_LButtonDown $0201
Def %wm_LButtonUp $0202
Def %wm_LButtonDblClk $0203
Def %wm_RButtonDown $0204
Def %wm_RButtonUp $0205
Def %wm_RButtonDblClk $0206
Def %wm_MButtonDown $0207
Def %wm_MButtonUp $0208
Def %wm_MButtonDblClk $0209
Def %16Bit 65536
DECLARE Ende%, btn_Ende%, dlg%
DECLARE r$, x&, y&
DECLARE Mausposition#
Dim Mausposition#, 4
WindowStyle 16
dlg% = @createwindow(%Hwnd,"Farbnamen anklicken",300,300,150,140)
btn_Ende% = @Create("BUTTON",dlg%, "Ende", 4, 80, 60, 24)
StartPaint dlg%
DrawText 4, 10, "rot"
DrawText 4, 30, "grün"
DrawText 4, 50, "blau"
DrawText 45, 10, "schwarz"
DrawText 45, 30, "weiß"
' "Maussensitivitätsbereiche" umranden
' (ist ablauftechnisch überflüssig, erleichtert aber vielleicht das Verständnis):
UseBrush 0, @RGB(222,222,222)
UsePen 2, 1, @RGB(222,222,222)
Rectangle 1, 10 - 40, 25
Rectangle 1, 30 - 40, 45
Rectangle 1, 50 - 40, 65
Rectangle 44, 10 -100, 25
Rectangle 44, 30 -100, 45
EndPaint
Ende% = 0
WHILENOT Ende%
GETMESSAGE
LOCATE 0,0
PRINT "Meldung.................. "; %Message; " = $"; @Hex$(%Message); " "
PRINT "Handles"
PRINT "Fenster unter Mauszeiger. "; %MWnd; " "
PRINT "Dialogfenster............ "; dlg%
PRINT "Ende-Button.............. ";btn_Ende%
If (%MWnd = dlg%)
r$ = "Dialogfenster"
ElseIf (%MWnd = %HWnd)
r$ = "Hauptfenster "
Else
r$ = @Space$(15)
EndIf
PRINT "Maus über................ "; r$
Long Mausposition#, 0 = &LParam
x& = @Word(Mausposition#,0)
y& = @Word(Mausposition#,2)
PRINT "LParam.................. ", &LParam; @Tab(27); "---> x="; x&; " y="; y&; " "
y& = &LParam \ %16Bit
x& = &LParam - (y& * %16Bit)
PRINT ; @Tab(27); "---> x=";x& ; " y="; y&; " (anderes Rechenverfahren) "
PRINT "MouseX................... "; %MouseX; " "
PRINT "MouseY................... "; %MouseY; " "
PRINT "WParam................... "; &WParam; " "
r$ = ""
CASE @Equ(%Message,%WM_LButtonDown ) : r$ = "LButtonDown "
CASE @Equ(%Message,%wm_LButtonUp ) : r$ = "LButtonUp "
CASE @Equ(%Message,%wm_LButtonDblClk) : r$ = "LButtonDblClk"
CASE @Equ(%Message,%wm_RButtonDown ) : r$ = "RButtonDown "
CASE @Equ(%Message,%wm_RButtonUp ) : r$ = "RButtonUp "
CASE @Equ(%Message,%wm_RButtonDblClk) : r$ = "RButtonDblClk"
CASE @Equ(%Message,%wm_MButtonDown ) : r$ = "MButtonDown "
CASE @Equ(%Message,%wm_MButtonUp ) : r$ = "MButtonUp "
CASE @Equ(%Message,%wm_MButtonDblClk) : r$ = "MButtonDblClk"
PRINT "Letzte Buttonaktion...... "; r$
r$ = ""
If @Equ(%Message,%wm_LButtonUp)
If @And((x&>1),(x&<40))
Case (y&>10) & (y&<25) : r$ = "rot "
Case (y&>30) & (y&<45) : r$ = "grün "
Case (y&>50) & (y&<65) : r$ = "blau "
EndIf
If @And((x&>44),(x&<100))
Case (y&>10) & (y&<25) : r$ = "schwarz"
Case (y&>30) & (y&<45) : r$ = "weiß "
EndIf
locate 15,1
print r$
EndIf
CASE @GetFocus(btn_Ende%) : Ende% = -1
ENDWHILE
Dispose Mausposition#
END
|
| | Datum: 22.07.02 22:51 
(Kerzenlicht@chello.at) | |
Hallo Carlo
Hab ich meinen 2. Eintrag voreilig geschrieben, deiner kam zeitgleich.
Also einmal ein großes Dankeschön. Das war genau das was ich gesucht hab, habs auch schon in meinem Programm eingebaut.
Das mit &LParam hätt halt auch ein bischen mehr Zeilen in der Hilfe vertragen! Kannst dir gar nicht vorstellen wie lang ich gesucht hab und wo, hab ich dann einen Link zu einem Beispiel gefunden, hab ich das Pech das gerade dieser Link nicht funktioniert.
Mfg Thomas Ungerböck
|
| | Datum:22.07.02 22:32 
(Kerzenlicht@chello.at) | |
Hallo
Hier noch mein Testquelltext der besseren Verständlichkeit halber.
Windowstyle $F0
Cls
Window 0,0-1024,768
@CreateWindow(%Hwnd,"",10,0,250,450)
'@CreateDialog(%Hwnd,"",10,0,250,450)
While 1
Getmessage
case @Equ(&WParam,27):break
Print " @getactivewindow()",@getactivewindow()," %Message",%Message," &WParam",&WParam," &LParam",&LParam," %MWnd",%MWnd," %PeekMessage",%PeekMessage," %LastMessage",%LastMessage
Wend
End
Wenn ich mit der Maus herumfahre ändert sich ständig &LParam, deshalb nehm ich mal stark an, das der Wert die Mauskoordinaten enthält (Die ProfanHilfe ist in diesem Punkt nicht unbedingt eine Hilfe).
Nur hab ich keine Ahnung von den Zahlensythemen und um welches sich es handelt und wie man das umrechnet.
Mfg Thomas Ungerböck
|
|
|