Вариации на тему паттерна Command, из буки Gof.Boost::signal -- одна из реализаций.
Лично мне очень понравилась реализация сего в виде "обобщенных функторов" от Александреску. Просто, элегантно и со вкусом!
Но все это реализуется, в конечном итоге, через наследование и, соотв., вызов виртуальных методов.
В C++0x ввел понятие auto переменных, тип которых определяется в момент компиляции, а также, лямбда ф-ции. Кто мешает Вам дергать из кода Баттона, "автоматическую" переменную, которая указывает на определенную Вами лямбду, в которой, в свою очередь, Вы дергаете ф-ции необходимых объектов?
PS: пока это размышления на тему. Не пробывал, поскольку небыло необходимости.