The event handler is stored in a HandlerDesc data structure as a PFNHANDLER, along with a pointer to a block of memory allocated and owned by the controller. This pointer will be passed into the controller's event handler with each event to be processed. The HandlerDesc data structure also contains a PFNFREEHANDLER that will be called when the controller is released so that the controller may free the private memory allocated and passed to the event handler.
IController_SetHandler() associates a given HandlerDesc data structure with a particular controller.
void ICONTROLLER_SetHandler(IController* pi, HandlerDesc* pDesc);
- pDesc is attached or detached (if NULL).