Mein verzweifelter Versuch Gadgets dynamisch zu laden

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Mein verzweifelter Versuch Gadgets dynamisch zu laden

Beitrag von Konne »

Hallo, ich bin verzweifelt.
Seit Wochen versuche ich Gadgets irgendwie dynamisch (also mit dlls oda so) in mein Programm zu laden. Wenn die eine Hirde geknackt ist, kommt schon die nächste.
Bis jetzt habe ich versucht Gadgets irgendwie auf die WindowID die ich übergebe zu erzeugen, aber der Eventloop geht dann vollens den Bach hinunter.
Naja langsam gehen mir die Ideen aus. Hat irgenwer eine Ahnung wie man sowas machen kann?
Benutzeravatar
mardanny71
Beiträge: 266
Registriert: 05.03.2005 01:15
Wohnort: Thüringen

Beitrag von mardanny71 »

Direkt ins Programmfenster?Integriert?
Nein - -leider keine Ahnung.

Der übliche Weg wäre ja:
Gadget in Hauptexe optional erzeugen - Funktionalität in dll.

Willst Du was für Windows machen?

Was sich pair API machen lässt könnte vielleicht Integriert werden.

Wäre aber sicher sehr Umfangreich - eben was für Experten.

Code?

gruß
mardanny71
Zuletzt geändert von mardanny71 am 19.08.2006 11:54, insgesamt 1-mal geändert.
Gruß, mardanny71
Windows 7 - openSUSE 12.1 - KDE 4.7 - PB4.6 beta 4
Benutzeravatar
PBZecke
Beiträge: 399
Registriert: 02.09.2004 17:34

Beitrag von PBZecke »

Bitte genauer erklären was Du vor hast.
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Dafür wäre diese Funktion nützlich:

Code: Alles auswählen

Execute(string$)
Dass man in dem String zum Beispiel das stehen hat:

Code: Alles auswählen

string$="Buttongadget(...)
Dass er denString ausführt.

Diesen String würden wir aus einer Textdatei auslesen und dann im beim WIndowerstellen ausführen.
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

@alves
so eine funktion kann es nicht geben - dafür ließe sich das aber z.b. so machen (ist aber nicht was konne braucht):

Code: Alles auswählen

OpenWindow(0, 0, 0, 322, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  PanelGadget     (0, 8, 38, 306, 173)
    AddGadgetItem (0, -1, "A")
    AddGadgetItem (0, -1, "B")
  CloseGadgetList()
  ButtonGadget(1, 8,8, 86,25, "DRYCK'N")

i=2
Repeat
  event=WaitWindowEvent()
  If event=#PB_Event_Gadget And EventGadget()=1
    SetGadgetState(0,1);[zweites item anzeigen]
   
    OpenGadgetList(0, 1)
      ButtonGadget(i, 5,5+i*20, 50,15, Str(i) )
      i+1
    CloseGadgetList()
  EndIf
Until event=#PB_Event_CloseWindow 
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
mardanny71
Beiträge: 266
Registriert: 05.03.2005 01:15
Wohnort: Thüringen

Beitrag von mardanny71 »

Alves hat geschrieben:Dafür wäre diese Funktion nützlich:

Code: Alles auswählen

Execute(string$)
Dass man in dem String zum Beispiel das stehen hat:

Code: Alles auswählen

string$="Buttongadget(...)
Dass er denString ausführt.

Diesen String würden wir aus einer Textdatei auslesen und dann im beim WIndowerstellen ausführen.
Aber ein Gadgetaufruf ist doch eine Funktion, welche erst einmal compiliert werden muß.
Oder wie meinst Du das?

grüsse an alle
mardanny71
Gruß, mardanny71
Windows 7 - openSUSE 12.1 - KDE 4.7 - PB4.6 beta 4
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Ich meine wie man ein Gadget aus einer dll erstellen kann und dann den eventloop noch unter kontrolle.
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Also diese Funktion gibt es auch nicht.

Ich meinte das so, dass esw schön wäre, diese zu haben, da man so zb in einen String eine komplette Funktion mit Parametern zu schrieebn, diesen String zb aus einer datei ausliest und dann ausführt (den string).

So könnte man vor der Widowerstellung die Strings mit den adgets lesen und ausführen bei der Windowerstellung.
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

schon verstanden, aber dann modifizierst du den programm-fluß ja auf quelltext-ebene, d.h. du müßtest ihn danach (nochmal) compilieren.
..oder man setzt es als compilerdirektive um, aber dann hat es noch weniger mit "dynamisch" zu tun.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
mardanny71
Beiträge: 266
Registriert: 05.03.2005 01:15
Wohnort: Thüringen

Beitrag von mardanny71 »

@Alves
In einer Textdatei könnten höchstens Strings stehen, welche eine schon compilierte Funktion aufrufen und Parameter übergeben.Aber das willst Du sicher nicht.
@Konne
Frage:
Wo rufst Du die DLL auf?
Vor der Hauptschleife?
Vieleicht ist das ja dein Prob...

grüsse an alle
mardanny71
Gruß, mardanny71
Windows 7 - openSUSE 12.1 - KDE 4.7 - PB4.6 beta 4
Antworten