Dan,
This all relates to a post I made years ago called 'When is a handle not a handle?'. Mostly, when you get the handle of a control it is an integer number drawn from a pool of Windows handles. Graphics objects are different: you GIVE a graphics object a handle at the moment of creation. This is NOT a Windows handle. Paul is using 'identifier' now, but the word 'handle' is used in the documentation.
As you gave each graphics area life, you should have selected that unique identifier to give it, and that is the one you use in 'SELECT_GRAPHICS_OBJECT@. You should know all the handles and what they relate to.
A problem with Clearwin's %gr is that you can create a graphics area without giving it a handle. Do that more than once, and you are stuck. Sometimes it seems useful, like the woman with 14 children all called 'Wayne' (so they would all come if called) - but in practice it is a bad idea. Clearwin in my experience deals with the last created %gr area when you immediately afterwards give graphics commands, but it can get confused if you do other things and then return to a graphics area.
You should only use GET_GRAPHICS_SELECTED_AREA@ when you absolutely know that the user with select a graphics area as his/her next interaction with the program, for example when they have clicked on a button that tells the program you want to select an area. It is not like some graphics programs like CorelDRAW where you can select an area whenever you feel like it, and the program responds appropriately.
If you want the CorelDRAW type functionality, you have to use full mouse input and deal with it yourself, decyphering what the user wanted from the sequence of clicks.
Perhaps it would be convenient for Clearwin+ to have a routine that listed all graphics handles and which is the current one, but if you don't provide the handles in the first place, it wouldn't work very well!
Eddie