Seite 1 von 1
					
				Hilfe bei Gadgets und DLL's
				Verfasst: 13.04.2013 12:22
				von TheCreepyProgramer
				Guten Tag,
ich bräuchte einmal Hilfe mit der Programmierung von Gadgets und DLL's. Ich stelle im Haupt-Programm ein Panel-Gadget zur Verfügung, dass dann zusammen mit der GadgetID des PanelGadgets an eine DLL übergeben wird. In dieser füge ich dann zu dem PanelGadget eine Registerkarte hinzu (funktioniert soweit) und dann dorten hinein ein TextGadget (funktioniert nicht). Hier habe ich mal einen Code aus der DLL:
Code: Alles auswählen
ProcedureDLL Init(hWnd, PanelGadget)
	UseGadgetList(hWnd)
	OpenGadgetList(PanelGadget, GetGadgetState(PanelGadget))
	AddGadgetItem(PanelGadget, -1, "DLL")
	TextGadget(100, 0, 0, 100, 20, "Hello from DLL")
EndProcedure
Das Problem ist, dass das TextGadget auf den Registerkarten angezeigt wird, nicht in den eigentlichen Bereich.
 
			 
			
					
				Re: Hilfe bei Gadgets und DLL's
				Verfasst: 13.04.2013 12:34
				von Kiffi
				CloseGadgetList() vergessen?
Grüße ... Kiffi
			 
			
					
				Re: Hilfe bei Gadgets und DLL's
				Verfasst: 13.04.2013 13:27
				von TheCreepyProgramer
				Hallo Kiffi,
das einfügen von CloseGadgetList() vor EndProcedure ändert leider auch nichts - es wird immer noch falsch dargestellt.
			 
			
					
				Re: Hilfe bei Gadgets und DLL's
				Verfasst: 13.04.2013 14:19
				von TheCreepyProgramer
				Hier mal ein Code-Auszug:
Code: Alles auswählen
If OpenLibrary(0, "Gadgets.dll")
    InitDLL.Init = GetFunction(0, "init")
    InitDLL(GadgetID(#PanelGadget), #PanelGadget)
EndIf
 
Code: Alles auswählen
ProcedureDLL init(GadgetID, Gadget)
        UseGadgetList(GadgetID)
	OpenGadgetList(Gadget)
	AddGadgetItem(Gadget, -1, Name$)
	TextGadget(10, 0, 0, 100, 20, "Hello from DLL!")
	CloseGadgetList()
EndProcedure
 
			 
			
					
				Re: Hilfe bei Gadgets und DLL's
				Verfasst: 13.04.2013 15:05
				von Kiffi
				kann jetzt so nix falsches erkennen.
Code: Alles auswählen
#myWindow = 0 
#myPanel = 0
#myButton = 1
If OpenWindow(#myWindow, 0, 0, 322, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	PanelGadget(#myPanel, 8, 8, 306, 203)
	AddGadgetItem(#myPanel, -1,"Panel 1")
	ButtonGadget(#myButton, 10, 15, 80, 24,"Button 1")
	CloseGadgetList()
	Repeat 
		
		Event = WaitWindowEvent()
		
		If Event = #PB_Event_Gadget And EventGadget()=#myButton
			
			UseGadgetList(GadgetID(#myPanel))
			
			OpenGadgetList(#myPanel)
			AddGadgetItem(#myPanel, -1, "noch'n Panel")
			TextGadget(#PB_Any, 0, 0, 100, 20, "noch'n TextGadget")
			CloseGadgetList()
			
		EndIf
		
	Until Event = #PB_Event_CloseWindow
EndIf
Evtl.: Du vergibst für Dein TextGadget eine feste Nummer.
Kann es sein, dass Du damit ein anderes Gadget überschreibst?
Grüße ... Kiffi
 
			 
			
					
				Re: Hilfe bei Gadgets und DLL's
				Verfasst: 13.04.2013 15:06
				von mk-soft
				Nicht getestet
Code: Alles auswählen
ProcedureDLL init(WindowID, Gadget)
  
   Protected item
   
   UseGadgetList(WindowID)
   OpenGadgetList(Gadget)
   AddGadgetItem(Gadget, -1, Name$)
   CloseGadgetList()
   item = CountGadgetItems(gadget) - 1
   OpenGadgetList(Gadget, item)
   TextGadget(10, 0, 0, 100, 20, "Hello from DLL!")
   CloseGadgetList()
EndProcedure
P.S. Tipp - Für so etwas ist es besser #PB_Any zu nehmen.