Scrollbargadget in Echtzeit?

Für allgemeine Fragen zur Programmierung mit PureBasic.
schamu
Beiträge: 3
Registriert: 11.09.2004 03:10

Scrollbargadget in Echtzeit?

Beitrag von schamu »

Hallo!
Wie funktioniert es das ich in Echtzeit auf ein Scrollbargadget reagieren kann?
Folgenden Code habe ich gefunden, er geht aber nicht.
Weiß da jemand ne Lösung?

Code: Alles auswählen

OpenWindow(0,300,300,400,70,"test",#PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))

ScrollBarGadget(0,10,40,380,20,1,10,1)
TextGadget(1,10,10,380,20,"1",#PB_Text_Center)

Procedure MyWindowCallback(WindowID, Message, wParam, lParam)
  Result = #PB_ProcessPureBasicEvents
  If Message=#WM_COMMAND And lParam=GadgetID(0)
    SetGadgetText(1,Str(GetGadgetState(0)))
  EndIf
  ProcedureReturn Result
EndProcedure

SetWindowCallback(@MyWindowCallback())
 
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow 
Windows XP SP2
PureBasic 4.02/PHP/8051 Assembler
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Code: Alles auswählen

OpenWindow(0,300,300,400,70,"test",#PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
ScrollBarGadget(0,10,40,380,20,1,10,1)
TextGadget(1,10,10,380,20,"1",#PB_Text_Center)

Procedure WindowCallback(hWnd.l,uMsg.l,wParam.l,lParam.l)
	If uMsg = #WM_HSCROLL And lParam = GadgetID(0)
		SetGadgetText(1,Str(GetGadgetState(0)))
	EndIf
	
	ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

SetWindowCallback(@WindowCallback())
 
While WaitWindowEvent() ! 16 : Wend
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wenn man sich sowas etwas vereinfachen möchte, empfiehlt sich die
EasyVENT.pbi von srod: http://www.purebasic.fr/english/viewtop ... t=easyvent

Code: Alles auswählen

XIncludeFile "EasyVENT.pbi"

Procedure OnScroll(*sender.PB_Sender)
  SetGadgetText(1,Str(GetGadgetState(0)))
  ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure

OpenWindow(0,300,300,400,70,"test",#PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))

ScrollBarGadget(0,10,40,380,20,1,10,1)
TextGadget(1,10,10,380,20,"1",#PB_Text_Center)

SetEventHandler(GadgetID(0), #onscroll, @OnScroll()) 
 
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow 
Diese Eventhandler machen einen das Leben etwas leichter.
Für einen Eventhandler ist das aber etwas übertrieben, da wäre der
Source von Fluid Byte sinnvoller
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
schamu
Beiträge: 3
Registriert: 11.09.2004 03:10

Beitrag von schamu »

Danke, das habe ich gesucht.
Funktioniert perfekt.

Das Sollte noch ins Codearchiv aufgenommen werden, denn der Code der Dort vorhanden ist geht nicht.
Windows XP SP2
PureBasic 4.02/PHP/8051 Assembler
Antworten