Hi,
Im Codearchiv habe ich gesehen, dass der Befehl WindowEvent() nicht nur die Werte die in der Dokumentation stehen ausgeben kann, sondern z.b. auch, ob eine Taste gedrückt wurde! Liege ich richtig, dass es für diese Werte einfach keine Konstanten gibt? Und wenn ja, kann man eine Vollständige Liste aller Ereignise, die dieser Befehl anzeigen kann, einsehen? Ich muss so komisch fragen! Ich bin Anfänger!
windowevent()
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Code: Alles auswählen
#WM_KEYDOWN =256
#VK_LBUTTON =$01 ;Left mouse button
#VK_RBUTTON =$02 ;Right mouse button
#VK_CANCEL =$03 ;Control-Break processing
#VK_MBUTTON =$04 ;Middle mouse button (three-button mouse)
#VK_BACK =$08 ;BACKSPACE key
#VK_TAB =$09 ;TAB key
#VK_CLEAR =$0C ;CLEAR key
#VK_RETURN =$0D ;ENTER key
#VK_SHIFT =$10 ;SHIFT key
#VK_CONTROL =$11 ;CTRL key
#VK_MENU =$12 ;ALT key
#VK_PAUSE =$13 ;PAUSE key
#VK_CAPITAL =$14 ;CAPS LOCK key
#VK_ESCAPE =$1B ;ESC key
#VK_SPACE =$20 ;SPACEBAR
#VK_PRIOR =$21 ;PAGE UP key
#VK_NEXT =$22 ;PAGE DOWN key
#VK_END =$23 ;End key
#VK_HOME =$24 ;HOME key
#VK_LEFT =$25 ;LEFT ARROW key
#VK_UP =$26 ;UP ARROW key
#VK_RIGHT =$27 ;RIGHT ARROW key
#VK_DOWN =$28 ;DOWN ARROW key
#VK_SELECT =$29 ;Select key
#VK_EXECUTE =$2B ;EXECUTE key
#VK_SNAPSHOT =$2C ;PRINT SCREEN key For Windows 3.0 And later
#VK_INSERT =$2D ;INS key
#VK_DELETE =$2E ;DEL key
#VK_HELP =$2F ;HELP key
#VK_0 =$30 ;0 key
#VK_1 =$31 ;1 key
#VK_2 =$32 ;2 key
#VK_3 =$33 ;3 key
#VK_4 =$34 ;4 key
#VK_5 =$35 ;5 key
#VK_6 =$36 ;6 key
#VK_7 =$37 ;7 key
#VK_8 =$38 ;8 key
#VK_9 =$39 ;9 key
#VK_A =$41 ;A key
#VK_B =$42 ;B key
#VK_C =$43 ;C key
#VK_D =$44 ;D key
#VK_E =$45 ;E key
#VK_F =$46 ;F key
#VK_G =$47 ;G key
#VK_H =$48 ;H key
#VK_I =$49 ;I key
#VK_J =$4A ;J key
#VK_K =$4B ;K key
#VK_L =$4C ;L key
#VK_M =$4D ;M key
#VK_N =$4E ;N key
#VK_O =$4F ;O key
#VK_P =$50 ;P key
#VK_Q =$51 ;Q key
#VK_R =$52 ;R key
#VK_S =$53 ;S key
#VK_T =$54 ;T key
#VK_U =$55 ;U key
#VK_V =$56 ;V key
#VK_W =$57 ;W key
#VK_X =$58 ;X key
#VK_Y =$59 ;Y key
#VK_Z =$5A ;Z key
#VK_LWIN =$5B ;Left Windows key (Microsoft Natural Keyboard)
#VK_RWIN =$5C ;Right Windows key (Microsoft Natural Keyboard)
#VK_APPS =$5D ;Applications key (Microsoft Natural Keyboard)
#VK_NUMPAD0 =$60 ;Numeric keypad 0 key
#VK_NUMPAD1 =$61 ;Numeric keypad 1 key
#VK_NUMPAD2 =$62 ;Numeric keypad 2 key
#VK_NUMPAD3 =$63 ;Numeric keypad 3 key
#VK_NUMPAD4 =$64 ;Numeric keypad 4 key
#VK_NUMPAD5 =$65 ;Numeric keypad 5 key
#VK_NUMPAD6 =$66 ;Numeric keypad 6 key
#VK_NUMPAD7 =$67 ;Numeric keypad 7 key
#VK_NUMPAD8 =$68 ;Numeric keypad 8 key
#VK_NUMPAD9 =$69 ;Numeric keypad 9 key
#VK_MULTIPLY =$6A ;Multiply key
#VK_ADD =$6B ;Add key
#VK_SEPARATOR =$6C ;Separator key
#VK_SUBTRACT =$6D ;Subtract key
#VK_DECIMAL =$6E ;Decimal key
#VK_DIVIDE =$6F ;Divide key
#VK_F1 =$70 ;F1 key
#VK_F2 =$71 ;F2 key
#VK_F3 =$72 ;F3 key
#VK_F4 =$73 ;F4 key
#VK_F5 =$74 ;F5 key
#VK_F6 =$75 ;F6 key
#VK_F7 =$76 ;F7 key
#VK_F8 =$77 ;F8 key
#VK_F9 =$78 ;F9 key
#VK_F10 =$79 ;F10 key
#VK_F11 =$7A ;F11 key
#VK_F12 =$7B ;F12 key
#VK_F13 =$7C ;F13 key
#VK_F14 =$7D ;F14 key
#VK_F15 =$7E ;F15 key
#VK_F16 =$7F ;F16 key
#VK_F17 =$80 ;F17 key
#VK_F18 =$81 ;F18 key
#VK_F19 =$82 ;F19 key
#VK_F20 =$83 ;F20 key
#VK_F21 =$84 ;F21 key
#VK_F22 =$85 ;F22 key
#VK_F23 =$86 ;F23 key
#VK_F24 =$87 ;F24 key
#VK_NUMLOCK =$90 ;NUM LOCK key
#VK_SCROLL =$91 ;SCROLL LOCK key
#VK_ATTN =$F6 ;Attn key
#VK_CRSEL =$F7 ;CrSel key
#VK_EXSEL =$F8 ;ExSel key
#VK_EREOF =$F9 ;Erase EOF key
#VK_PLAY =$FA ;Play key
#VK_ZOOM =$FB ;Zoom key
#VK_NONAME =$FC ;Reserved For future use.
#VK_PA1 =$FD ;PA1 key
;-EXAMPLE
OpenWindow(0, 0, 0, 200, 0, #PB_Window_TitleBar, "Press Escape to quit")
Repeat : Until WindowEvent() = #WM_KEYDOWN And EventwParam() = #VK_ESCAPE : EndDie Konstanten sind alle von der WinAPI
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Code
Das Problem ist, dass Eventwparam() offensichtlich nicht zwischen Groß - und Kleinbuchstaben unterscheiden kann. Das brauche ich jedoch für mein Programm. Ich habe es auch schon mit KeyboardInKey probiert! Das lief aber nicht richtig! Hier mal der Code:
;Nicht über die komische Anordnung der Gadgets wundern! Ich arbeite mit Braille (Punktschrift) und Sprachausgabe und mache so was immer zum Schluss!
directx = InitKeyboard()
If directx = 0
MessageRequester("Fehler","Auf Ihrem Computer ist kein oder ein veraltetes DirectX installiert. Bevor Sie dieses Programm nutzen können, müssen Sie DirectX neu installieren!")
EndIf
InitKeyboard()
OpenWindow(1, 20, 20, 200, 200, #PB_Window_MinimizeGadget|#pb_window_maximizegadget, "Schreibtrainer")
CreateMenu(1, WindowID())
MenuTitle("Training")
MenuItem(1, "Start")
MenuItem(2, "Textdatei als Trainingsvorlage öffnen")
MenuItem(3, "Beenden")
MenuTitle("Modus")
MenuItem(11, "Computer soll das Training geben")
MenuItem(12, "Textdatei für das Training verwenden")
MenuTitle("Optionen")
MenuTitle("?")
CreateGadgetList(WindowID())
TextGadget(1, 30, 50, 80, 60, "Willkommen beim Schreibtrainer!")
Repeat
Select WaitWindowEvent()
Case #pb_event_menu
Select EventMenuID()
Case 1
Goto start
Case 2
Goto opentext
Case 3
Goto Ending
EndSelect
Case #pb_event_closewindow
Goto Ending
EndSelect
ForEver
start:
FreeGadget(1)
textgadget(2, 90, 50, 90, 60, "Tippen Sie die Buchstaben ein!")
StringGadget(1, 90, 90, 20, 30, "")
; Hier der Problemteil! Die Taste, die der User eingibt wird erst beim zweiten durchlauf erkannt!
Abfrage:
compkey = 97+Random(25)
compkey$ = Chr(compkey)
SetGadgetText(1,compkey$)
Repeat
Delay(30)
ActivateGadget(1)
event =WindowEvent()
ExamineKeyboard()
If KeyboardPushed(#pb_key_all) > 0
Break
EndIf
ForEver
examinekeyboard()
keypress$ = keyboardinkey()
messagerequester(keypress$,compkey$)
If keypress$ = compkey$
Goto Ending ;Einfach um zu sehen, ob er die Tasten richtig erkennt!
Else
Goto Abfrage
EndIf
opentext:
Ending:
End
Währe nett, wenn ihr mir helfen könntet! Ich finde meinen Fehler einfach nicht!
MfG
Hypersoft
;Nicht über die komische Anordnung der Gadgets wundern! Ich arbeite mit Braille (Punktschrift) und Sprachausgabe und mache so was immer zum Schluss!
directx = InitKeyboard()
If directx = 0
MessageRequester("Fehler","Auf Ihrem Computer ist kein oder ein veraltetes DirectX installiert. Bevor Sie dieses Programm nutzen können, müssen Sie DirectX neu installieren!")
EndIf
InitKeyboard()
OpenWindow(1, 20, 20, 200, 200, #PB_Window_MinimizeGadget|#pb_window_maximizegadget, "Schreibtrainer")
CreateMenu(1, WindowID())
MenuTitle("Training")
MenuItem(1, "Start")
MenuItem(2, "Textdatei als Trainingsvorlage öffnen")
MenuItem(3, "Beenden")
MenuTitle("Modus")
MenuItem(11, "Computer soll das Training geben")
MenuItem(12, "Textdatei für das Training verwenden")
MenuTitle("Optionen")
MenuTitle("?")
CreateGadgetList(WindowID())
TextGadget(1, 30, 50, 80, 60, "Willkommen beim Schreibtrainer!")
Repeat
Select WaitWindowEvent()
Case #pb_event_menu
Select EventMenuID()
Case 1
Goto start
Case 2
Goto opentext
Case 3
Goto Ending
EndSelect
Case #pb_event_closewindow
Goto Ending
EndSelect
ForEver
start:
FreeGadget(1)
textgadget(2, 90, 50, 90, 60, "Tippen Sie die Buchstaben ein!")
StringGadget(1, 90, 90, 20, 30, "")
; Hier der Problemteil! Die Taste, die der User eingibt wird erst beim zweiten durchlauf erkannt!
Abfrage:
compkey = 97+Random(25)
compkey$ = Chr(compkey)
SetGadgetText(1,compkey$)
Repeat
Delay(30)
ActivateGadget(1)
event =WindowEvent()
ExamineKeyboard()
If KeyboardPushed(#pb_key_all) > 0
Break
EndIf
ForEver
examinekeyboard()
keypress$ = keyboardinkey()
messagerequester(keypress$,compkey$)
If keypress$ = compkey$
Goto Ending ;Einfach um zu sehen, ob er die Tasten richtig erkennt!
Else
Goto Abfrage
EndIf
opentext:
Ending:
End
Währe nett, wenn ihr mir helfen könntet! Ich finde meinen Fehler einfach nicht!
MfG
Hypersoft