[fpc-pascal] Library callback : how do I do that?
henry.vermaak at gmail.com
Thu Aug 8 12:58:44 CEST 2013
On Thu, Aug 08, 2013 at 11:34:53AM +0100, Lukasz Sokol wrote:
> This would be fine, IFF i was adding this to the main form of my
> application... but I'm not. I'm trying to wrap this .dll in a
> separate unit, only communicating to the form through a wrapper
> object, defined in a separate unit. The object itself, would be
> created /by/ the form window, but won't be a GUI object, so won't be
> in the message queue;
> Doing a chain like:
> (Setup) (form passes its handle to the object) -> (object installs
> callback function) and then (normal operation) (form receives callback
> via Windows Message) -> (form calls e.g OnCallback function of the
> seems a bit backwards.
> I can imagine, that I need to have the Callback procedure as
> procedure Callback(Port, Event, Value : Integer); stdcall;
> but how do I call functions/procedures of MyObject in a threadsafe
> manner from there?
Lazarus has QueueAsyncCall, which is a thread safe, cross platform way
of queueing method calls asynchronously.
E.g. for USB hotplug notification, I register this function with my
procedure NotifyPlug(status: cint); cdecl;
More information about the fpc-pascal