On Fri, Aug 29, 2008 at 08:55:56AM +0100, Duncan Parsons wrote:

(please turn off the html stuff)

> (i)&nbsp;&nbsp; Library is loaded, either statically or dynamically<br />
> (ii)&nbsp; DLL has an exported function 
> 'SetHostApplication(HostApp:TApplication):TApplication;' before the host app 
> can use a form, it must call something like 
> DLLApp:=SetHostApplication(Application); and inside the dll the application 
> object passed should be stored (in a global or whatever is appropriate), and 
> its own Application object should be returned. The host and the dll now both 
> know about each other.<br />
> (iii) After calling SetHostApplication, the received DLLApp is registered 
> into an internal list in TApplication - let's call it fChildApps - using a 
> procedure RegisterChildApp(DLLApp);...<br />
> (iv)&nbsp; In the Host's message-loop it iterates fChildApps calling a 
> procedure to attempt to process the current message [if it's keyboard or 
> mouse related]. If it is handled, the host proceeds to the next message, if 
> not it handles it itself. At the end of the loop, a call should be made to 
> each of the fChildApps.ProcessMessages which calls the relevant 
> Widgetset.AppProcessMessages.<br />
> (v)&nbsp;&nbsp; When a dll is done, if dynamically unloaded, a call should be 
> made to UnRegisterChildApp.

> Hmmm - looks complicated!

And that is the easy part. Because what happens if you deallocate an object
in the mainprogram that is allocated in the lib using a different
memmanager?

or if you do

if x is ty then

when X was allocated in the lib, and ty is from context of the main program. ?

See http://wiki.freepascal.org/packages

So in short, any interaction that trancends the most simplistic definition of C 
api
is not possible between mainprogram and DLL.
 
> Right - who thinks what? :-)

That you used packages on Delphi, and never understood what they are about
;-)
_______________________________________________
Lazarus mailing list
Lazarus@lazarus.freepascal.org
http://www.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to