Hilfe bei Gadgets und DLL's

Für allgemeine Fragen zur Programmierung mit PureBasic.
TheCreepyProgramer
Beiträge: 42
Registriert: 11.06.2011 13:22

Hilfe bei Gadgets und DLL's

Beitrag 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.
Bild
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Hilfe bei Gadgets und DLL's

Beitrag von Kiffi »

CloseGadgetList() vergessen?

Grüße ... Kiffi
a²+b²=mc²
TheCreepyProgramer
Beiträge: 42
Registriert: 11.06.2011 13:22

Re: Hilfe bei Gadgets und DLL's

Beitrag von TheCreepyProgramer »

Hallo Kiffi,

das einfügen von CloseGadgetList() vor EndProcedure ändert leider auch nichts - es wird immer noch falsch dargestellt.
Bild
TheCreepyProgramer
Beiträge: 42
Registriert: 11.06.2011 13:22

Re: Hilfe bei Gadgets und DLL's

Beitrag 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
Bild
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Hilfe bei Gadgets und DLL's

Beitrag 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
a²+b²=mc²
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Hilfe bei Gadgets und DLL's

Beitrag 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.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten