This framework isn't very useful for building end-user programs. I use it at work to make quick test programs, or test harnesses for libraries I write. The output window lets me write out debugging messages without having to toggle back to Visual Studio's Debug pane and look for ODS strings among all the other stuff in the Debug area. The framework comes with my Status Reporter library. Problems Beep and send the message to the output area.
Normal status Send the message to the output area.
Internal status Log the message internally. Verbose status Ignore the message unless verbose logging is enabled. The mechanism preserves the file name and line number where errors occur. These are passed all the way down the call chain, so that your particular subclass can use them or not, as it sees fit. I use this feature to send file name and line numbers to the debug log file, but leave them off when I'm showing messages to the user, for example.