Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 242821 (4257)
  Suchen
 Zurück zur Übersicht
 AutorThema: &LParam
Thomas Ungerböck
Datum:22.07.02 18:40 Antwortenals Email verschicken (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


carlo keil
Datum:22.07.02 22:30 Antwortenals Email verschicken (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



Thomas Ungerböck
Datum: 22.07.02 22:51 Antwortenals Email verschicken (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


Thomas Ungerböck
Datum:22.07.02 22:32 Antwortenals Email verschicken (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


 Zurück zur Übersicht