KeyDown(1)/KeyHit(1) und GetKey funktioniert nicht

Übersicht BlitzBasic BlitzPlus

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Samuel

Betreff: KeyDown(1)/KeyHit(1) und GetKey funktioniert nicht

BeitragSa, Apr 30, 2011 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ich habe follgenden code:

Code: [AUSKLAPPEN]
window = CreateWindow("Google", 0, 0, GfxModeWidth (CountGfxModes()), GfxModeHeight (CountGfxModes()), 0, 32)
htmlview = CreateHtmlView(0, 0, ClientWidth(window), ClientHeight(window)-30, window)
HtmlViewGo htmlview, "http://www.google.com"

Repeat
   If KeyDown(1) Then End
Forever


es soll google im "vollbild" öffnen...

und ich will, dass man mit Esc das programm beenden kann - keydown/keyhit/getkey funktioniert aber nicht

habe ich irgendwas übersehen/falsch überlegte?

gruss
samuel

blackgecko

BeitragSa, Apr 30, 2011 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich noch weiß, sind diese Befehle (Keydown, Mousedown usw) nur für Grafik-Programme gedacht, funktionieren also nur, wenn ein Graphics-Fenster existiert und ausgewählt ist.
Ansonsten musst du mit Events arbeiten. Hier sind alle Event-Befehle. Bei WaitEvent ist ein ausführliches Beispiel dabei.
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

Samuel

BeitragSa, Apr 30, 2011 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
jetzt sieht die hauptschleife so aus:
Code: [AUSKLAPPEN]

Repeat
   Select WaitEvent(0)
      Case $103
          If EventData()=27 Then End
   End Select
Forever

funktioniert immernochnicht Sad

Pummelie

BeitragSa, Apr 30, 2011 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuch mal zu warten , und nicht den Befewhl mit einer 0 aus zu führen. so 10 ms pro schleifendurchlauf, damit fällt auch timern weg.

Außerdem kannst du die Desktopgröße und Weite so Abfragen:
BlitzBasic: [AUSKLAPPEN]
height=GadgetHeight(Desktop())
width=GadgetWidth(Desktop())
It's done when it's done.

Samuel

BeitragSa, Apr 30, 2011 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für den tipp mit wight/height

aber es funktioniert immernochnicht Sad

blackgecko

BeitragSo, Mai 01, 2011 18:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuch mal was passiert wenn du
1. den Parameter von Waitevent ganz weglässt
2. das Event $101 verwendest (Achtung: EventData liefert jetzt Scancode)
(Ich weiß nicht, ob EventData bei $103 Scan- oder ASCII-Code liefert, da widerspricht sich die Hilfe leider selbst)

Also:
Code: [AUSKLAPPEN]
Repeat
   Select WaitEvent()
      Case $101
          If EventData()=1 Then End
   End Select
Forever

Samuel

BeitragMi, Mai 04, 2011 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
ich weiss, die hilfe ist nicht eindeutig... Sad schade

jetzt hält der debbugger das programm immer bei WaitEvent auf...

was könnte falsch sein?

EDIT:
also hier nochmal mein Code(vielleicht ist der Fehler woanderst)...
Code: [AUSKLAPPEN]
Global height=GadgetHeight(Desktop());GfxModeHeight (CountGfxModes())
Global width=GadgetWidth(Desktop());GfxModeWidth (CountGfxModes())
Global window = CreateWindow("Google - Vollbild", 0, 0, GadgetWidth(Desktop()), GadgetHeight(Desktop()), 0, 32)
Global htmlview = CreateHtmlView(0, 0, ClientWidth(window), ClientHeight(window), window)
HtmlViewGo htmlview, "http://www.google.com"
HotKeyEvent 1, 0, $803, 0, 0, 0, 0, window

While WaitEvent()<>$803
   
Wend


End

Könnt ja mal testen ob es bei euch funktioniert.
(Ich will ein Vollbild-Google haben, wo man mit ESC beenden kann....)


thanks

Samuel

BeitragMi, Mai 25, 2011 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
ich weiss, die hilfe ist nicht eindeutig... Sad schade

jetzt hält der debbugger das programm immer bei WaitEvent auf...

was könnte falsch sein?

EDIT:
also hier nochmal mein Code(vielleicht ist der Fehler woanderst)...
Code: [AUSKLAPPEN]
Global height=GadgetHeight(Desktop());GfxModeHeight (CountGfxModes())
Global width=GadgetWidth(Desktop());GfxModeWidth (CountGfxModes())
Global window = CreateWindow("Google - Vollbild", 0, 0, GadgetWidth(Desktop()), GadgetHeight(Desktop()), 0, 32)
Global htmlview = CreateHtmlView(0, 0, ClientWidth(window), ClientHeight(window), window)
HtmlViewGo htmlview, "http://www.google.com"
HotKeyEvent 1, 0, $803, 0, 0, 0, 0, window

While WaitEvent()<>$803
   
Wend


End

Könnt ja mal testen ob es bei euch funktioniert.
(Ich will ein Vollbild-Google haben, wo man mit ESC beenden kann....)



bitte bald antworten danke

skey-z

BeitragMi, Mai 25, 2011 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuch die Schleife doch mal so auf zu bauen

Code: [AUSKLAPPEN]


while event <> $803

event = waitevent()

select event
...
wend


Habe kein BP aber so müsste es eigentlich funktionieren.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Samuel

BeitragMi, Mai 25, 2011 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
funktioniert leider immernoch nicht Sad

der debugger hält einfach an...

blackgecko

BeitragMi, Mai 25, 2011 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Pushen ist hier verboten, so dreist sowieso.

Ich hab mir mal die Mühe gemacht und an deinem Code eine weile rumprobiert (Hättest du übrigens auch selbst machen können).
Ich bin zu dem Ergebnis gelangt, dass es am htmlview liegt, denn sobald ich das aus dem Fenster rausnehme, funktioniert der Code wie er soll.
Deine Fehlerbeschreibung ist übrigens auch nicht gerade die beste, denn der Debugger hält gar nichts auf, das WaitEvent sorgt dafür, dass auf ein Event gewartet wird, was es ja auch tun soll, nur kommt halt keins an. Mit dem Debugger hat das überhaupt nichts zu tun.
Für dein Problem seh ich erst mal keine Lösung, weil das htmlview alle Tasten-Events abzufangen scheint - warum auch immer. Sie sind somit weder mit HotkeyEvent noch mit WaitEvent aufzufinden.
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

Samuel

BeitragMi, Mai 25, 2011 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
dass der beitrag doppelt gekommen ist - ist ein fehler -> sry

und es ist schade das es keine lösung gibt
(auch wenn bei mir der debugger anhält - keine ahnung wieso)

blackgecko

BeitragMi, Mai 25, 2011 19:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Fehler mit 3 Wochen Zeitunterschied?
An was genau merkst du denn, dass der Debugger es ist, der anhält? Normalerweise drängt er sich dann in den Vordergrund, zeigt den Quelltext an und gibt eine Fehlermeldung aus. Tut er das?
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

Samuel

BeitragMi, Mai 25, 2011 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
ja er kommt in den vordergrund und die ampel wechselt auf grün
 

Eisbaer

Betreff: (BlitzPlus) HtmlView - Tastatur Abfrage ermöglichen.

BeitragMi, Nov 14, 2012 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine Lösung für das Problem im Anhang.

Das ganze wird nun über die WinAPI und "Virtuelle Key's" gelöst.

Referenzen für andere Anwedungen:
http://msdn.microsoft.com/en-u...85%29.aspx

Lg Eisbaer



Code: [AUSKLAPPEN]
; Tastatur Abfrage unter BPlus - V0.1
; Da das HTML Fenster die Abfrage über GetKey() abfängt und nicht an das Programm weiterleitet.
;
; Homepage:  www.eisbaer-solution.de 
;
; Decls:
;
;.lib "user32.dll"
;api_GetAsyncKeyState% (vKey%) : "GetAsyncKeyState"
;


deskw = ClientWidth(Desktop())
deskh = ClientHeight(Desktop())
c=CreateTimer(60)

Const VK_ESCAPE% = $1B

window = CreateWindow("Blitz Demo Browser", 0, 0, deskw, deskh, 0, 1)

x = ClientWidth(window)
y = ClientHeight(window)

htmlview = CreateHtmlView(10, 10, x - 20, y - 20, window)
HtmlViewGo htmlview, "http://www.blitzforum.de"

While ( Not IsKeyPressed( VK_ESCAPE ) )
   
   If WaitEvent() = $803 Then End
   WaitTimer(c)

Wend
End


Function IsKeyPressed( vKey% )
   Return ( api_GetAsyncKeyState( vKey% ) Shr 16 ) And 1
End Function
Eigene Webseite:

http://www.eisbaer-studios.de

KnorxThieus

BeitragSa, Mai 11, 2013 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Also bei mir hält es wieder an.
Ich hab irgendwo mal gehört, WaitEvent sei schuld.

Die Funkton IsKeyPressed wirkt auch nicht.

Das nur als Information: Jetzt geht es ja offenbar nicht mehr, ist wohl ein Update schuld? Und die sechs Monate sind noch nicht um.
Version: BlitzPlus / Blitz+
 

MCocktail

BeitragSa, Mai 11, 2013 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man Waitevent() ohne irgendwas in der Klammer benutzt, dann wartet es immer bis ein Event stattgefunden hat. Vielleicht kann das der Grund sein warum es anhält.

Hast du schon mal HotKeyEvent ausprobiert?
Laut HotKeyEvent müsste das dann so aussehen
BlitzBasic: [AUSKLAPPEN]

HotKeyEvent 1,0,$123456789;irgendwas was du willst

;Hauptschleife:
Repeat
Select WaitEvent(0)
Case $803
End
Case $123456789
End
Forever
  • Zuletzt bearbeitet von MCocktail am Sa, Mai 11, 2013 14:39, insgesamt einmal bearbeitet

KnorxThieus

Betreff: ?

BeitragSa, Mai 11, 2013 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähm... redest du jetzt mit mir oder Samuel?

Na, dann braucht man ja auch WaitEvent - oder wie meinst du das?
Version: BlitzPlus / Blitz+
 

MCocktail

BeitragSa, Mai 11, 2013 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich meine wenn du einfach WaitEvent() ohne irgendwas eingibst, wartet es so lange bis ein Event eintrifft. Wenn da WaitEvent(zahl) steht dann wartet es zahl Millisekunden lang auf ein Event.

z.B
BlitzBasic: [AUSKLAPPEN]
;wartet so lange bis was passiert
WaitEvent()
;wartet nur 100 millisec. lang
WaitEvent(100)
Gruß von: MCocktail

KnorxThieus

BeitragSa, Mai 11, 2013 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, ich hab auch eine Null eingesetzt.
Version: BlitzPlus / Blitz+

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group