Anfängerfragen zum Programmieren mit PureBasic.
			
		
		
			- 
				
																			
								schleicher							 
									
		- Beiträge: 214
 		- Registriert: 30.03.2014 19:57
 		
		
											- Computerausstattung: Purebasic 5.70
 
												- Wohnort: 18314 Löbnitz
 
							
						
		
		
						
						
													
							
						
									
						Beitrag
					
								von schleicher » 
			
			
			
			
			Wie ein Tastendruck erkannt wird ist mir klar . z.B. key down 
Code: Alles auswählen
EnableExplicit
Enumeration Window
  #win
EndEnumeration
Enumeration
  #w_key_down
EndEnumeration
Define event.l
Define x.i=0
#flags=#PB_Window_SystemMenu | #PB_Window_ScreenCentered
If OpenWindow(#win,0,0,300,200,"keytest",#flags)
  
  AddKeyboardShortcut(#win,#PB_Shortcut_Down,#w_key_down)                    ;add shortcut key_down
  
  Repeat
    event=WaitWindowEvent()
    Select event
      Case  #PB_Event_Menu
        Select EventMenu()
          Case #w_key_down
            x=x+1        
            Debug  Str(x)+" down key"   
            
        EndSelect
    EndSelect
  Until event=#PB_Event_CloseWindow
EndIf
Aber wie kann ich das machen, das erkannt wird, das gerade  eine Taste gedrückt gehalten wird ?
 
			
			
									
									Purebasic 5.51
						 
		 
				
		
		 
	 
				
			
		
		
			- 
				
								NicknameFJ							
 
									
		- Beiträge: 324
 		- Registriert: 03.06.2007 14:36
 		
		
											- Wohnort: Von der Sonne aus gesehen der dritte Planet
 
							
						
		
		
						
						
													
							
						
									
						Beitrag
					
								von NicknameFJ » 
			
			
			
			
			Hi,
auf WIN gibt es die WIN-API Funktion GetAsyncKeyState 
https://docs.microsoft.com/en-us/window ... nckeystate
mit der abgefragt werden kann ob eine Taste gerade im Moment der Abfrage gedrückt ist.
NicknameFJ
 
			
			
									
									PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

 
						 
		 
				
		
		 
	 
	
						
		
		
			- 
				
								tft							
 
									
		- Beiträge: 650
 		- Registriert: 08.09.2004 20:18
 		
		
											- Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
 
																	- Wohnort: Dachsen
 
							
							- 
				Kontaktdaten:
				
			
 
				
		
		
						
						
													
							
						
									
						Beitrag
					
								von tft » 
			
			
			
			
			hier ein wenig Code ..... zum experimentieren. Es wird die Taste "W" geprüft.
Code: Alles auswählen
;ömm ja .. Debug aktivieren !! 
Macro SwitshVar( _VarName_ )
  
  _VarName_ =  _VarName_ + 1 
  If _VarName_ > 1 
    _VarName_ = 0 
  EndIf 
    
EndMacro
OpenWindow(1,0,0,200,100,"Event Test",#PB_Window_SystemMenu |#PB_Window_ScreenCentered)    
ButtonGadget(1, 0, 0,  80, 20, "Play")
ButtonGadget(2, 90, 0,  80, 20, "Stop")  
DisableGadget(2,1) 
  
Debug "Bitte drücken sie eine beliebige Taste!"+Str(rr) 
GetCursorPos_(st.POINT) 
Debug st\x 
Debug st\y 
Define Schalter
Repeat 
  
  Event=WaitWindowEvent() 
  
  Select Event
    Case #PB_Event_CloseWindow  
      Break
    Case #PB_Event_Gadget
      Select EventGadget()
       Case 1 ; Play
          DisableGadget(2,0)  ; Enable the 'Stop' gadget
          DisableGadget(1,1)  ; Disable the 'Play' Gadget
       Case 2 ; Stop
          DisableGadget(1,0)  ; Enable the 'Play' gadget
          DisableGadget(2,1)  ; Disable the 'Stop' Gadget
       EndSelect 
     
    Case #WM_MOUSEWHEEL
      If (EventwParam() >> 16) & $8000
        Debug "Down"
      Else         
        Debug "Up"
      EndIf
    Case #WM_MOUSEMOVE 
      Debug "#WM_MOUSEMOVEw " + Str(EventwParam()) 
      Debug "#WM_MOUSEMOVEl " + StrF(EventlParam()) 
    Case #WM_LBUTTONDBLCLK  
      Debug "#WM_LBUTTONDBLCLK " + Str(EventwParam()) 
      Debug "#WM_LBUTTONDBLCLK " + Str(EventlParam()) 
      
    Case #WM_LBUTTONDOWN  
      Debug "#WM_LBUTTONDOWN " + Str(EventwParam()) 
      Debug "#WM_LBUTTONDOWN " + Str(EventlParam()) 
      
    Case #WM_LBUTTONUP  
      Debug "#WM_LBUTTONUP " + Str(EventwParam()) 
      Debug "#WM_LBUTTONUP " + Str(EventlParam()) 
      
    Case #WM_RBUTTONDOWN  
      Debug "#WM_RBUTTONDOWN " + Str(EventwParam()) 
      Debug "#WM_RBUTTONDOWN " + Str(EventlParam()) 
      
    Case #WM_RBUTTONUP 
      Debug "#WM_RBUTTONUP" + Str(EventwParam()) 
      Debug "#WM_RBUTTONUP" + Str(EventlParam()) 
      
    Case #WM_MBUTTONDBLCLK 
      Debug "#WM_MBUTTONDBLCLK " + Str(EventwParam()) 
      Debug "#WM_MBUTTONDBLCLK " + Str(EventlParam()) 
    Case #WM_MBUTTONDOWN 
      Debug "#WM_MBUTTONDOWN " + Str(EventwParam()) 
      Debug "#WM_MBUTTONDOWN " + Str(EventlParam()) 
    Case #WM_MBUTTONUP 
      Debug "#WM_MBUTTONUP " + Str(EventwParam()) 
      Debug "#WM_MBUTTONUP " + Str(EventlParam()) 
      
    Case #WM_NCMOUSEMOVE 
      Debug "#WM_NCMOUSEMOVE " + Str(EventwParam()) 
      Debug "#WM_NCMOUSEMOVE " + Str(EventlParam()) 
      
    Case #WM_NCLBUTTONDBLCLK 
      Debug "#WM_NCLBUTTONDBLCLK " + Str(EventwParam()) 
      Debug "#WM_NCLBUTTONDBLCLK " + Str(EventlParam()) 
      
      
      
    Case #WM_ACTIVATE 
      Debug "#WM_ACTIVATE " +Str(EventwParam()) 
      Debug "#WM_ACTIVATE " +Str(EventlParam()) 
    Case #WM_CHAR 
      Debug "#CHAR w:    " + Chr(EventwParam())
      Debug "#CHAR l:    " + Str(EventlParam()) 
    Case #WM_DEADCHAR 
      Debug "#DEADCHAR:   " + Str(EventwParam()) 
    Case #WM_KEYDOWN 
      Debug "#KEYDOWN(w): " + Str(EventwParam()) 
      Debug "#KEYDOWN(l): " + Str(EventlParam()) 
      SwitshVar( schalter )
    Case #WM_KEYUP 
      Debug "#KEYUP(w):   " + Str(EventwParam()) 
      Debug "#KEYUP(l):   " + Str(EventlParam())
      SwitshVar( schalter )
    Case #WM_SYSCHAR 
      Debug "#SYSCHAR:   " + Str(EventwParam()) 
    Case #WM_SYSDEADCHAR  
      Debug "#SYDEADSCHAR:   " + Str(EventwParam()) 
    Case #WM_SYSKEYDOWN 
      Debug "#SYSKEYDOWN:   " + Str(EventwParam()) 
    Case #WM_SYSKEYUP 
      Debug "#SYSKEYUP:   " + Str(EventwParam()) 
    Default      
      Debug Event
  EndSelect 
  
; -----------------------------------------------
  If GetAsyncKeyState_(#VK_W) <> 0
    Debug "Key W it is presset in this moment"
  EndIf
 ;----------------------------------------------
  GetCursorPos_(st.POINT) 
  Debug st\x 
  Debug st\y 
  Debug "Schalter = "+Str(schalter)
  Debug "-----------------"   
  
ForEver 
End 
gruss TFT