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.