The link provided above is worth looking at, but here is an example that should help. It provides added flexibility to callback events by having the callback VI fire a user event which then can be handled by your event structure. This way, you can manage all your events in your top level VI, rather than depending on the callback VIs to do any processing. All the callback VIs should do is fire a particular user event to be handled in your event structure. Let me know if you need more clarification. As for the button click, I'm not sure if one of the methods for the activex control corresponds to this. For my example, I just picked an arbitrary callback event to use to show how to handle them with this flexible method.
Edit: I did not take time to implement error handling or make clusters and enums typedefs etc. In your program you should take the time to do this.