[API] Mausposition ermitteln, Problem

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
php-freak
Beiträge: 536
Registriert: 07.02.2009 18:08

[API] Mausposition ermitteln, Problem

Beitrag von php-freak »

Hallo,

sorry das ich einen zweiten Thread aufmache aber dieses Problem ist viel Allgemeiner!

hab folgeden Code aus der API Lib von RSBasic!

Code: Alles auswählen

Procedure Thread()
  Repeat
    GetCursorPos_(Coords.POINT)
    SetGadgetText(1,"Mausposition: x="+Str(Coords\x)+" y="+Str(Coords\y))
    Delay(10)
  ForEver
EndProcedure

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(0))
    TextGadget(1,10,10,200,20,"",0)
  EndIf
  CreateThread(@Thread(),0)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
^^Funktioniert so auch gut!

Aber man krieg das ganze nicht aus der Procedure raus!

Weder mit ProcedureReturn noch mit Global die Variable auch außerhalb verfügbar machen! Dann kommt ein Error das Coords\x oder Coords\y keine Structure hat!

Und wenn man dafür nen Structure macht fuktioniert es immernochnicht :-(

Klar man kann es eventuell in den Speicher schreiben allerdings ist dies ja umständlicher als normal!

Gruß

JENS
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

warum API ?

Es gibt doch in PB:
DesktopMouseX und DesktopMouseY
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
php-freak
Beiträge: 536
Registriert: 07.02.2009 18:08

Beitrag von php-freak »

Keine Ahnung! API MAG ICH! Naja! Dann mach ichs halt so!
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

aber wenns in PB einfacher geht... :roll:
Win11 x64 | PB 6.20
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

>Weder mit ProcedureReturn noch mit Global die Variable auch außerhalb verfügbar machen! Dann kommt ein Error das Coords\x oder Coords\y keine Structure hat!

Was genau aus der Prozedur? Das Objekt? Natürlich geht das:

Code: Alles auswählen

Procedure GetPoint()
;...
*Coords.Point
*Coords=HeapAlloc_(GetProcessHeap_(),$00000008 ,SizeOf(Point))
ProcedureReturn *Coords
EndProcedure
;...
*abc.Point
*abc=GetPoint()
Ist aber sicherlich zu hoch für dich, nimm die PB Lib-Funktionen.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

das Hauptproblem ist, dass du eine fertige Procedur nimmst die als Thread laufen soll,
anstatt zu verstehen was die API-Funktion dir zurückliefert und das in deiner eigenen Schleife zu verwenden.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

la le lu.. gedaddelt in den schuh...

Code: Alles auswählen

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
Define Coords.POINT
  Repeat
    Event = WaitWindowEvent(100)
    GetCursorPos_(Coords)
    OutText1$ = "x="+Str(Coords\x)+" y="+Str(Coords\y)
    MapWindowPoints_( 0, WindowID(0), Coords, 1 ) 
    StartDrawing( WindowOutput( 0 ) )
      Box( 0,0, 500, 250 )
      DrawText(0,0,OutText1$,$CC9933,0)
      LineXY(   0,   0, Coords\x,Coords\y, $00FFFF )
      LineXY( 500,   0, Coords\x,Coords\y, $00FFFF )
      LineXY(   0, 250, Coords\x,Coords\y, $00FFFF )
      LineXY( 500, 250, Coords\x,Coords\y, $00FFFF )
    StopDrawing()
  Until Event = #PB_Event_CloseWindow
EndIf
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Da oben hab ich ihm ne fertige Prozedur gegeben. Eine winzige Sache fehlt da noch. Bin mal gespannt, ob ers hinbekommt. bin überhaupt mal gespannt, ob er merkt, ob die Funktion überhaupt Sinn macht. :mrgreen:
Zuletzt geändert von X0r am 17.02.2009 23:06, insgesamt 1-mal geändert.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Das wirkliche Problem ist der fehlende Parameter bei der Threadfunktion.
Sollte RSBasic auch schnellstens aendern.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@edel
Wird am WE gemacht.

\\Edit:
Ne ich machs jetzt schnell^^
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten