They are two ways of implementing an event system. They are different and at the level they are exposed can’t be implemented the same by client code (your code).
You could abstract the two in such a way that they look like they act the same, but that means creating some construct (probably a class with necessary bits and pieces) that internally use the two different event systems.
The events on the document are implemented using a listener pattern: you have functions (event handlers) that you register with the events.
The mouse callback uses a subclass system where you override functions you want to react on. An instance of such a MouseCallback-deriving subclass is your callback object, its overridden methods are like the event handlers in the former way.