PB - dll in clickexe verwenden

Für allgemeine Fragen zur Programmierung mit PureBasic.
manunidi
Beiträge: 109
Registriert: 12.04.2006 22:44

PB - dll in clickexe verwenden

Beitrag 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?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Statt endlosschleife ein Callback setzen sollte genügen
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
manunidi
Beiträge: 109
Registriert: 12.04.2006 22:44

Beitrag 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?
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag 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
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
manunidi
Beiträge: 109
Registriert: 12.04.2006 22:44

Beitrag 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?
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag 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
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
manunidi
Beiträge: 109
Registriert: 12.04.2006 22:44

Beitrag 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?
manunidi
Beiträge: 109
Registriert: 12.04.2006 22:44

Beitrag von manunidi »

Der Zugriffsfehler kommt nach genau der Zeit, nach der der "delay" abgewartet wird! Kann sich das jemand erklären?
Antworten