I'm using Roland Smith's wonderful free GetFileName tool (http://www.topwizprogramming.com/freecode_getfilename.html) to get a more modern version of GetFileOpenName and GetFileSaveName, including allowing those dialogs to have a Help button which goes to a topic in my program's Help file. (That last part is actually an improvement I drafted and worked on with him.)
You get that Help button by setting a flag in the OPENFILENAME structure used by the relevant Windows API function, and you have to catch clicks on that Help button by using RegisterWindowMessage("commdlg_help"), which returns a message number, and we then catch calls to that message in the calling window's Other event, and open the desired Help topic from there.
But I really don't like using the Other event, because it is triggered by so many Windows events. Obviously the code checks that it's the right message number, so it's not that it's causing bugs, but when I'm using the debugger in PB windows with code for this event, I often get caught in a loop of calls to that event, and if I do tracing (e.g. with /PBDEBUG) I get pages and pages of calls to it, that significantly inflate the size of the trace file.
Can anyone think of any other way to catch such messages without using the Other event? I've read all the Help I can find on declaring events and can't see any obvious other way to do this, but maybe someone else knows more about it.