Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Mausanzeige in einem bestimmten Bereich

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 30.12.2006, 12:05    Titel: Mausanzeige in einem bestimmten Bereich Antworten mit Zitat

Hallo Jungs!

Ich habe ein Problem mit der Maus!

Ich besitze am Bildschirm ein Feld mit


Code:

                  Y 45
X 210   *********************** 
X 210   *                     *   
X 210   *                     *   X 616
X 210   *                     *   X 616
X 210   *                     *
X 210   *                     *
X 210   ***********************

                  Y 420


das da oben sind die Koordianten.

Und ich möchte das der Mauszeiger nicht in dieses Feld kann/darf.

Aber der Mauszeiger soll jederzeit aussen herum frei bewegt werden können.

Ich habe schon mal ein paar Versuche gestartet aber leider sind meine Versuche fehlgeschlagen.

Wenn ein Mauszeiger sich im Kasten befindet und nicht heraus soll konnte ich bereits programmieren, aber das andere das er nicht hinein darf nicht!

Ich verwende MAUSMODL.BAS das man bei www.Qbasic.de download/Maus&Tastatur/Maus.zip herunterladen kann.

Bei einem meiner Test waren gleich zwei Mauszeiger zu sehen, wobei man den Mauszeiger nicht mehr bewegen konnte.

Ich hoffe ihr könnt mir helfen!

Mit freundlichen Grüßen
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 30.12.2006, 12:52    Titel: Antworten mit Zitat

hm
vllt machstes mal so:
Code:

alte koordinaten sichern
maus einlesen
WENN die maus im bereich ist DANN:
        maus abschalten
        zu den alten koordinaten setzen
        maus aktivieren

_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 01.01.2007, 23:18    Titel: Antworten mit Zitat

wenn ich mich recht erinnere gab es da auch einen interrupt / eine funktion, um die maus in ihrer bewegungsfreiheit einzugrenzen, also einen bereich zu definieren, in dem die maus sich bewegen kann, aber ansonsten nicht. quasi wie am bildschirmrand, dass es halt net weiter geht.

wenn dem so ist, musst du deinen bildschirm in 9 felder unterteilen, (wie ein tic-tac-toe feld, nur nicht alle gleich groß). das feld in der mitte ist das, in das die maus nicht darf. und nun immer abfragen:

wenn die maus in einem eck-feld ist, darf sie in jedes andere feld.
wenn die maus in einem seitenfeld ist, darf sie nur in die angrenzenden eckfelder, also die grenzen halt auf bildschirmrand und trennlinie zu mittelfeld setzen.

sollte soweit funktionieren, mit der kleinen einschränkung, dass es möglich ist, über das exakte eckpixel in die mitte "einzubrechen".

ansonsten die lösung von "kleiner hacker": letzte bekannte mausposition immer speichern, aktuelle überprüfen, ob innerhalb vom "verbotenen bereich", wenn ja, zurück zu gespeicherten alten koordinaten, ansonsten koordinaten speichern und fertig. abschalten des cursors sollte nicht nötig sein.

Lutz böse Ifer


ps: bei der mausroutine, die ich verwendet habe, war es hilfreich, vor zeichenoperationen (circle, line, pset etc.) den mauscursor immer abzuschalten, weil sich so grafikfehler vermeiden ließen.
_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 02.01.2007, 11:34    Titel: Antworten mit Zitat

Lutz Ifer hat Folgendes geschrieben:
wenn ich mich recht erinnere gab es da auch einen interrupt / eine funktion, um die maus in ihrer bewegungsfreiheit einzugrenzen, also einen bereich zu definieren, in dem die maus sich bewegen kann, aber ansonsten nicht. quasi wie am bildschirmrand, dass es halt net weiter geht.

Fensterbereich setzen: INT 33h, AX=0007h (horizontal) und INT 33h, AX=0008h (vertikal), d.h. danach lässt sich die Maus nur noch in einem "Gefängnis"-Bereich bewegen.

Lutz Ifer hat Folgendes geschrieben:
ansonsten die lösung von "kleiner hacker": letzte bekannte mausposition immer speichern, aktuelle überprüfen, ob innerhalb vom "verbotenen bereich", wenn ja, zurück zu gespeicherten alten koordinaten, ansonsten koordinaten speichern und fertig. abschalten des cursors sollte nicht nötig sein.

Alternative: Man kann es auch wie Windows machen, also Maus kann sich überall bewegen, aber man ändert das Symbol (INT 33h, AX=0009h) in eine "Verbotstafel" und ignoriert Klicks.

Lutz Ifer hat Folgendes geschrieben:
ps: bei der mausroutine, die ich verwendet habe, war es hilfreich, vor zeichenoperationen (circle, line, pset etc.) den mauscursor immer abzuschalten, weil sich so grafikfehler vermeiden ließen.

Das ist nichts library-Spezifisches, sondern eine allgemeine Eigenschaft der Mausunterstützung. Auch bei http://www.dreael.ch/QB/mini_des.zip musste ich jeweils vor Veränderungen ein INT 33h/AX=0002h aufrufen, dann meine Veränderungen vornehmen und am Schluss wieder INT 33h/AX=0001h aufrufen.

Ursache dieses Problems: Die traditionellen PC-Grafikkarten unterstützen keinerlei Hardware-Sprites im Gegensatz zur Commodore-Rechnerfamilie, womit der DOS-Maustreiber den Cursor direkt ins Video-RAM zeichnen muss. Beim C 64 als auch Amiga liess sich ein Grafikcursor als Hardware-Sprite programmieren, womit das Video-RAM nicht verändert werden musste.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 02.01.2007, 22:22    Titel: Antworten mit Zitat

Hi,
auch auf die Gefahr hin, daß dies schon bekannt ist:
Mathias Harbeck hat eine gute Zusammenstellung der MausInterrupts geschrieben(hat mir bei Pascal viel geholfen..)
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Bad_King
gesperrt


Anmeldungsdatum: 15.04.2006
Beiträge: 455
Wohnort: nähe Stuttgart

BeitragVerfasst am: 02.01.2007, 22:55    Titel: Antworten mit Zitat

@ALWIM:

Meinst du dass wenn man mit der Maus über das Feld geht, dass dann der Mauszeiger ausgeblendet wird oder dass die Maus sich nicht in dieses Feld hineinziehen lässt.

Wenn 1. : Das ist glauob die Methode von kliner_hacker.
2. :
Code:

IF mauszeiger_über_dem_gesperrten_bereich=true
THEN mauszeiger_einen_schritt_zurück()


Also wenn der mauszeiger über einen "verbotenen Pixel" drauf gegangen ist, wird der Mauszeiger zur voherigen Position zurückgesetzt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 03.01.2007, 00:01    Titel: Antworten mit Zitat

Die methode habe nwir schon weiter oben. du musst sie doch nicht noch 100x schreiben, er kann sich doch die beste selbst aussuchen.... peinlich
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 03.01.2007, 02:04    Titel: Antworten mit Zitat

Hallo!

Ich meine, dass man die Maus nicht in dieses Feld hinein ziehen kann.

Aber man müsste es so machen, dass das Programm erkennt von welcher Seite aus man mit der Maus hinein möchte.

Bis jetzt habe ich nicht das was ich wollte

Mit freundlichen Grüßen
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 03.01.2007, 02:19    Titel: Antworten mit Zitat

also die idee mit dem "verboten-cursor" find ich eig toll. für was brauchst du dass denn genau?
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 03.01.2007, 12:14    Titel: Antworten mit Zitat

Hallo!

Ich brauche das für mein STOP!

Mit freundlichen Grüßen
Alexander Lenhard
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 03.01.2007, 12:51    Titel: Antworten mit Zitat

Jaaah, das konnte ich mir ausdenken. Ich meine aber, was du damcht MACHEN willst. Wenn du z.B. willst, dass man irgendwelche Sachen in einem bestimmten Feld nicht anklicken darf, wäre die Anderer-Cursor-Methode besser. Und ich sage dir mal, was ich von der Cursor-Zurücksetzen-Methode halte:
Ich bin jemand, der die Maus ziemlich schnell über den Bildschirm zieht - von einer Ecke in die andere, durch die Mitte, ... Und da ist es wirkilch verdammt blöd, wenn ich mich da durch einen Hindernisparcour von nicht ansteuerbaren Koordinaten schlagen muss peinlich
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 03.01.2007, 12:58    Titel: Antworten mit Zitat

Hallo!

In diesem Kasten steht ein Text drin und der kann von dem Mauszeiger unlesbar gemacht werden. (Bei unsachgemäßer Behandlung!)
Darum will ich das man mit dem Mauszeiger nicht dahinein darf! Ganz rechts ist sowieso kein Button mehr für die Maus also kann man ruhig mal ein Hinderniss mit einbauen!

Mit freundlichen Grüßen
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eisbaer



Anmeldungsdatum: 16.10.2004
Beiträge: 354
Wohnort: Deutschland,Bayern

BeitragVerfasst am: 03.01.2007, 13:18    Titel: Antworten mit Zitat

Naja dann zeichne halt den text neu wenn die Maus drauf war, also alte Kordinaten Speichern Maus bewegen, Kordinaten wieder hinpixeln.
_________________
Eigene Webseite:
http://www.eisbaer-studios.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 03.01.2007, 13:22    Titel: Antworten mit Zitat

Hallo!

Genau das will ich ja nicht!

Naja egal wenn ich es nicht hinkriege!

Muss jetzt zur Arbeit. Um ca. 23.00 Uhr komme ich dann wieder!

Mit freundlichen Grüßen
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 03.01.2007, 22:44    Titel: Antworten mit Zitat

Habe ein kleines Beispiel zusammengestellt:

http://beilagen.dreael.ch/QB/MAUSSCRO.ZIP

Stellt ein ganz einfaches Info-Fenster dar, wo man meinetwegen die "Credits" einblenden würde und welches man mit "OK" wegklicken kann.

@ALWIN: Version MAUSSC_A.BAS entspricht in etwa Deiner Ausgangslage: Typisches Problem, dass sich der Scrollinhalt "verschmiert", wann man mit dem Zeiger darüberrollt.

Wir wollen das Ganze nun systematisch verbessern: Das Verschmieren lässt sich durch kurzzeitiges Zeiger aus- und einblenden vermeiden. Version MAUSSC_B.BAS tut dies exakt. Aber auch diese Version ist noch nicht perfekt: Zeiger flimmert ständig im Zehntelssekundentakt!

Aus diesem Grund optimieren wir es noch einen Schritt: Ausblendung nur noch dort, wo sich die Grafik verändert. Ist in Version MAUSSC_C.BAS so implementiert. Jetzt tritt das Flimmern nur noch auf, wenn sich der Mauszeiger über einem bewegten Bereich befindet.

Übrigens kann man teilweilse auch bei Windows (zumindest früher in 3.1x) diesen Effekt beobachten, speziell, wenn nur der Standard-VGA-Bildschirmtreiber aktiv ist, denn moderne Grafikkarten implementieren teilweise ebenfalls einen Hardware-Sprite-Mauszeiger, der die zuvor diskutierten Video-RAM-Zugriffsprobleme löst.

@ALWIN: Ich würde es an Deiner Stelle wie mein letztes Beispiel lösen.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz