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.