Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 242821 (4257)

| Suchen
| Zurück zur Übersicht

Autor | Thema: &LParam
Thomas Ungerböck
| 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
carlo keil
| 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
Thomas Ungerböck
| 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
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

| Zurück zur Übersicht