If I'm understanding things right, it sounds like the Java set and the boost.org signals library are fairly similar.

I would create one class that represents the control, then the users essentially create another class that I send the events to. It avoids the user having to create a wrapper around all of the control classes.