The answer is no (and yes) <G>
There is no need for any extra code to POST an event, or to receive the event. In other words, there is NO need for anything like the API RegisterWindowMessage. How you react to receiving the event is up to you.
You can use POST(Event:User + nnn) where n is an integer between 0 and 3071 (see EVENT:USER and EVENT:LAST)
I suggest you create an EQUATE to improve the readability of your code, and to reduce the likely hood of your using the same event number for two different meanings. Additionally if you discover that the events are being used by other code (such as 3rd party products) then it's a simple matter of altering the ONE equate, vs. searching all of your code to alter the the +N portion.
I use:
User:TabChanged EQUATE(EVENT:APP + 100)
User:CancelTabChange EQUATE(EVENT:APP + 101)
As you may have noticed, instead of EVENT:USER I am using EVENT:APP.
EVENT:USER appears in %cwroot%\libsrc\equates.clw however EVENT:APP is NOT defined for you.
Event:APP EQUATE(08000h)
Event:APP_LAST EQUATE(0BFFFh)
The following link was pointed years ago in the newsgroups by Carl Barnes. The link will tell that some of the event numbers between EVENT:USER and EVENT:LAST are being used by Microsoft. The upshot is that we should be using EVENT:APP instead of EVENT:USER
!
HTH,
Mark Goldberg