KeyDown(1)/KeyHit(1) und GetKey funktioniert nicht
Übersicht BlitzBasic BlitzPlus
SamuelBetreff: KeyDown(1)/KeyHit(1) und GetKey funktioniert nicht |
Sa, Apr 30, 2011 19:42 Antworten mit Zitat |
|
---|---|---|
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 |
Sa, Apr 30, 2011 20:06 Antworten mit Zitat |
|
---|---|---|
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 |
Sa, Apr 30, 2011 21:04 Antworten mit Zitat |
|
---|---|---|
jetzt sieht die hauptschleife so aus:
Code: [AUSKLAPPEN] Repeat Select WaitEvent(0) Case $103 If EventData()=27 Then End End Select Forever funktioniert immernochnicht |
||
Pummelie |
Sa, Apr 30, 2011 22:21 Antworten mit Zitat |
|
---|---|---|
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()) |
||
It's done when it's done. |
Samuel |
Sa, Apr 30, 2011 22:26 Antworten mit Zitat |
|
---|---|---|
danke für den tipp mit wight/height
aber es funktioniert immernochnicht |
||
blackgecko |
So, Mai 01, 2011 18:11 Antworten mit Zitat |
|
---|---|---|
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 |
Mi, Mai 04, 2011 19:49 Antworten mit Zitat |
|
---|---|---|
ich weiss, die hilfe ist nicht eindeutig... 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 |
Mi, Mai 25, 2011 14:03 Antworten mit Zitat |
|
---|---|---|
ich weiss, die hilfe ist nicht eindeutig... 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 |
Mi, Mai 25, 2011 18:24 Antworten mit Zitat |
|
---|---|---|
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 |
Samuel |
Mi, Mai 25, 2011 18:44 Antworten mit Zitat |
|
---|---|---|
funktioniert leider immernoch nicht
der debugger hält einfach an... |
||
blackgecko |
Mi, Mai 25, 2011 19:23 Antworten mit Zitat |
|
---|---|---|
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 |
Mi, Mai 25, 2011 19:30 Antworten mit Zitat |
|
---|---|---|
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 |
Mi, Mai 25, 2011 19:45 Antworten mit Zitat |
|
---|---|---|
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 |
Mi, Mai 25, 2011 19:57 Antworten mit Zitat |
|
---|---|---|
ja er kommt in den vordergrund und die ampel wechselt auf grün | ||
EisbaerBetreff: (BlitzPlus) HtmlView - Tastatur Abfrage ermöglichen. |
Mi, Nov 14, 2012 23:11 Antworten mit Zitat |
|
---|---|---|
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 |
Sa, Mai 11, 2013 12:48 Antworten mit Zitat |
|
---|---|---|
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 |
Sa, Mai 11, 2013 14:32 Antworten mit Zitat |
|
---|---|---|
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]
|
||
- Zuletzt bearbeitet von MCocktail am Sa, Mai 11, 2013 14:39, insgesamt einmal bearbeitet
KnorxThieusBetreff: ? |
Sa, Mai 11, 2013 14:35 Antworten mit Zitat |
|
---|---|---|
Ähm... redest du jetzt mit mir oder Samuel?
Na, dann braucht man ja auch WaitEvent - oder wie meinst du das? |
||
Version: BlitzPlus / Blitz+ |
MCocktail |
Sa, Mai 11, 2013 14:43 Antworten mit Zitat |
|
---|---|---|
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 |
||
Gruß von: MCocktail |
KnorxThieus |
Sa, Mai 11, 2013 14:44 Antworten mit Zitat |
|
---|---|---|
Ja, ich hab auch eine Null eingesetzt. | ||
Version: BlitzPlus / Blitz+ |
Übersicht BlitzBasic BlitzPlus
Powered by phpBB © 2001 - 2006, phpBB Group