Seite 1 von 1

PB - dll in clickexe verwenden

Verfasst: 21.04.2007 17:32
von manunidi
Hallo Leute!

Ich schreibe in letzter zeit ein paar dlls für clickexe (www.clickexe.de)!
Mit dem "Pro-Plugin" dieser "Programmiersprache" ist es möglich dlls einzubinden!

Mein Problem:

Ich binde eine dll ein, wo ein gadget auf dem clickexe fenster erzeugt wird, geht auch wunderbar! Nur der nächste Befehl in clickexe, also der nach dem dll aufruf das das gadget erzeugt wird, wird nicht mehr abgearbeitet, da ich ja in der dll, wenn ich das gadget erzeuge einen "endlosschleife" laufen lassen muss".

Wie kann ich das umgehen, das der nächste Befehl wieder ausgeführt wird?

Verfasst: 21.04.2007 18:00
von ts-soft
Statt endlosschleife ein Callback setzen sollte genügen

Verfasst: 21.04.2007 18:18
von manunidi
Habe leider noch nie mit callbacks gearbeitet, und werde aus der Hilfe auch nicht grad schlau! Wie genau muss ich den callback anwenden?

Verfasst: 21.04.2007 22:39
von 125
Du könntest auch einen Thread starten.

--

Zu den Callbacks: Du musst auf das Gadget (z.B. per SetWindowLong_ müsste der Befehl glaube ich heißen) ein Callback setzen: das heist jedes mal wenn das Gadget eine Nachricht erhält wird das Callback aufgerufen und du kannst sie abarbeiten. Somit brauchst du nicht mit WaitWindowEvent() auf das Event warten.

mfg
125

Verfasst: 22.04.2007 09:29
von manunidi
Leider habe ich jetzt einen Speicherzugriffsfehler!

Code: Alles auswählen

Procedure.l WindowCallback(hWnd, Msg, wParam, lParam)
 
  Result = #PB_ProcessPureBasicEvents
  
    MessageRequester("test", "test")    
 
  ProcedureReturn Result
 
EndProcedure 

ProcedureDLL test(titel.s)
  hwnd = FindWindow_(0,titel)
  CreateGadgetList(hwnd)
  id = TreeGadget(#PB_Any,0,0,100,100,#PB_Tree_CheckBoxes)
  ;SetWindowCallback(@WindowCallback())
  Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndProcedure
Was genau mache ich falsch?

Verfasst: 22.04.2007 14:32
von 125
Probier mal aus der Procedure.l eine ProcedureDLL zu machen, denn nicht als ProcedureDLL deklarierte Proceduren funktionieren nur DLL intern und können nicht extern aufgerufen werden.

mfg
125

Verfasst: 22.04.2007 21:49
von manunidi
das mit der proceduredll habe ich gemacht!

Problem:

Wenn ich nach dem setwindowcallback ein delay einbaue kommt der zugriffsfehler erst nach der zeit die in ich delay angegeben habe! Kann sich das jemand erklären?

Verfasst: 24.04.2007 19:42
von manunidi
Der Zugriffsfehler kommt nach genau der Zeit, nach der der "delay" abgewartet wird! Kann sich das jemand erklären?