I'm not seeing any pretty way to do this. Even if you do grab the text from stderr, its not always going to be easy to determine what part of it is related to the error you are handling.
I personally can't come up with any decent way to do this. Exposing a "Last Error" method would probably be a pretty easy approach, but not thread-safe, and quite ugly. There is also the issue of whether you only expose the last message (in which case, problems that create multiple messages lose all but the last message) or show all messages since last call (in which case, you can end up with excessive messages if you don't call it constantly).
What about a combination of returning error codes on function calls (instead of just true or false for success/fail), along with printing to the standard streams? Assigning all of the messages an integer-based ID then providing a look-up table for the message would also make it easy to localize the messages. Could then even include these events in the Event list from Window.Event so people could (eventually) print the errors in whatever way they please. Wouldn't be very useful for handling errors, would help with logging and error tracking.