




 
3.4.2  A simple implementation of a single Automation interface
In the case where you are implementing a single 
dispinterface that was designed by someone else, for example an event sink, you can usually avoid needing to parse a type library or define a class to implement the interface.
Instead, you implement a dispinterface using the class simple-i-dispatch by doing the following:
- 
Obtain an interface pointer that will provide type information for the component, to be used as the 
related-dispatch
 argument in the call to the function query-simple-i-dispatch-interface. In the case where you are implementing an event sink, the source interface pointer will usually do this.
- 
Optionally, define a class with 
defclassinheriting from simple-i-dispatch. The class simple-i-dispatch can be used itself if no special callback object is required.
- 
Implement an 
invoke-callback 
that selects and implements the methods of the interface.
- 
Define initialization code which calls co-initialize, obtains the 
related-dispatch
 from step 1, makes an instance of the COM object class defined in step 2 with the 
invoke-callback
 from step 3, obtains its interface pointer by calling query-simple-i-dispatch-interface (passing the 
related-dispatch
) and attaches this interface pointer to the appropriate sink in the 
related-dispatch
 (for example using connection point functions such as interface-connect). This must all be done in a thread that will be processing Windows messages (for instance a CAPI thread).
LispWorks COM/Automation User Guide and Reference Manual - 17 Jul 2006





