AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia [Andorra2D] Maus kann aus dem Sichtbaren Bereich bewegt werd

[Andorra2D] Maus kann aus dem Sichtbaren Bereich bewegt werd

Ein Thema von Eljey · begonnen am 7. Apr 2009 · letzter Beitrag vom 3. Jun 2009
Antwort Antwort
Benutzerbild von Eljey
Eljey

Registriert seit: 5. Mai 2007
56 Beiträge
 
#1

[Andorra2D] Maus kann aus dem Sichtbaren Bereich bewegt werd

  Alt 7. Apr 2009, 20:33
Hallo! Ich bins wieder und leider wieder mit einem Problem.


Ich benutze das Andorra WindowFramework mit AdGLFWWindow. In einer Auflösung von 1024x768 und eine Gui die ich auf die selbe auflösung strecke.

Problem: Die Maus kann aus dem sichtbaren Bereich heraus bewegt werden so das man sie nur schwer wieder hinein bekommt.

Delphi-Quellcode:
AdDraw := TAdDraw.Create(nil);

  AdDraw.DllName := 'AndorraOGL.dll'; //Function in the AdDLLExplorer unit

  screenwidth:=1024;
  screenheight:=768;
  AdDraw.Display.Width :=screenwidth;
  AdDraw.Display.Height :=screenheight;

...

AdGUI:= TAdGUI.Create(AdDraw); //Erzeugen der Klasse
AdGUI.Skin.LoadFromFile('sunna.axs'); //Laden des Skins
AdGUI.Cursors.LoadFromFile('cursors.xml'); //Laden der Cursor

  IF Paramstr(1)='-gothen
   go(ParamStr(2))
  else
   go('selektion');

  AdConnector:= TAdGUIConnector.Create(AdGUI); //Erzeugen des GUI Connectors
  AdConnector.ConnectEventHandlers(AdDraw.Window); //Verknuepfen mit dem Elternfenstersystem
  AdDraw.Window.Events.OnKeyDown:=@KeyDown;
  gegend:='';

  AdDraw.Run;
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#2

Re: [Andorra2D] Maus kann aus dem Sichtbaren Bereich bewegt

  Alt 9. Apr 2009, 12:12
Das ist ein mir bekanntes Problem mit GLFW. Eine mögliche Lösung ist den Mauszeiger selbst zu zeichnen und die Koordinaten einfach nicht über den Fensterrand hinaus gehen zu lassen. Dafür musst du entsprechen in OnMouseMove ein DeltaX und DeltaY berechnen.

EDIT:
Leite eine Klasse vom Andorra 2D Mauszeiger/der Mauszeigerverwaltung ab und verwende diese.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von Eljey
Eljey

Registriert seit: 5. Mai 2007
56 Beiträge
 
#3

Re: [Andorra2D] Maus kann aus dem Sichtbaren Bereich bewegt

  Alt 9. Apr 2009, 14:31
ok, danke ich werd versuchen
  Mit Zitat antworten Zitat
Benutzerbild von Eljey
Eljey

Registriert seit: 5. Mai 2007
56 Beiträge
 
#4

Re: [Andorra2D] Maus kann aus dem Sichtbaren Bereich bewegt

  Alt 30. Mai 2009, 21:29
Ich kriegs einfach nciht hin, kannst du mir ein Stück Code geben den ich einbauen kann. Alles andere funktioniert, aber wenn die Maus dauernd raushuppt, sit das blöd. Also hast du oder jemand ein Stück code parat?
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#5

Re: [Andorra2D] Maus kann aus dem Sichtbaren Bereich bewegt

  Alt 30. Mai 2009, 22:23
Ein Stückchen Code habe ich nicht, aber wenn du es wie oben beschrieben nicht hin bekommst, dann verwende doch das SDL oder VCL Windowframework - dort hast du dieses Problem erst gar nicht.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von Eljey
Eljey

Registriert seit: 5. Mai 2007
56 Beiträge
 
#6

Re: [Andorra2D] Maus kann aus dem Sichtbaren Bereich bewegt

  Alt 3. Jun 2009, 19:08
OK, ich hab eine wacklige Lösung gefunden, ich hab meine AdGLFWWindow.pas folgender maßen verändert:

Delphi-Quellcode:
procedure MousePosCallback(X, Y: Integer); stdcall;
var w,h:integer;
begin
  //Store the current mouse position
  MouseX := X;
  MouseY := Y;
  
  //Changes Ilja Bauer - Fix folowing Problem: Mouse move outside the Window
  glfwGetWindowSize(w, h);
  IF MouseX>w Then MouseX:=w-1;
  IF MouseX<0 Then MouseX:=1;
  IF MouseY>h Then MouseY:=h-1;
  IF MouseY<0 Then MouseY:=1;

  //Changes End

  //Call the mouse move event
  if Assigned(WindowInstance.Events.OnMouseMove) then
    WindowInstance.Events.OnMouseMove(WindowInstance, GetShiftState, MouseX, MouseY);
end;
Da mein Programm auch unter Linux laufen soll, kommt für mich nur GLFW in Frage.
Ein Problem hat die Lösung noch:
Es wird nur MouseX und MouseY verändert, X und Y gehen jedoch weiterhin ausßerhalb des Bereiches, so dass es Zu einem leichten kleben an dem Rand des Fensters gibt.
Wenn jemand weiß, wie manns beheben kann, soll hier posten.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#7

Re: [Andorra2D] Maus kann aus dem Sichtbaren Bereich bewegt

  Alt 3. Jun 2009, 20:06
Ich habe das implementiert, was ich oben gemeint habe - so geht es:
Delphi-Quellcode:
procedure MousePosCallback(X, Y: Integer); stdcall;
var
  deltax, deltay, w, h: Integer;
begin
  deltax := X - LastX;
  deltay := Y - LastY;
  LastX := X;
  LastY := Y;

  MouseX := MouseX + deltax;
  MouseY := MouseY + deltay;

  glfwGetWindowSize(w, h);
  if MouseX > w then
    MouseX := w - 1;
  if MouseX < 0 then
    MouseX := 0;
  if MouseY > h then
    MouseY := h - 1;
  if MouseY < 0 then
    MouseY := 0;

  //Call the mouse move event
  if Assigned(WindowInstance.Events.OnMouseMove) then
    WindowInstance.Events.OnMouseMove(WindowInstance, GetShiftState, MouseX, MouseY);
end;
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von Eljey
Eljey

Registriert seit: 5. Mai 2007
56 Beiträge
 
#8

Re: [Andorra2D] Maus kann aus dem Sichtbaren Bereich bewegt

  Alt 3. Jun 2009, 20:19
Ok, danke... War ja fast richtig...
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf