Thanks Rich for the help and info.
There are portions of the app that run in the WPS process and portions that run outside the WPS process. I was planning on using RWS for the outside-of-WPS-process parts. (BTW thanks for building and releasing that) I did not know that it was bundled with all AOS versions - that will help with building the install process.
For anyone else that might follow this topic, the code section looks something like this
----------------------------------------------
if( DrgVerifyRMF( DrgQueryDragitemPtr( pdrgInfo, ulCount),"DRM_OBJECT", NULL))
{
WPObject * pObject;
PDRAGITEM pDragItem;
pDragItem = DrgQueryDragitemPtr( pdrgInfo, ulCount);
pObject = OBJECT_FROM_PREC(pDragItem->ulItemID);
if (_debug) PmPrintfPtr("wpDragOver DRM_OBJECT name: %s",_somGetClassName(pObject));
...
----------------------------------------------------------------------
after you know that ulItemID contains pointer to the container record (thanks Rich) for the object, the magic sauce is the WPS macro OBJECT_FROM_PREC(), which extracts a pointer to WObject from ulItemID
-- editor to remove late night operator error --
... and if you feel uneasy about using the pointer, you can use somIsObj(pObject) to check if it indeed is a SOM (or derived thereof) object.
And if you follow the example code for "somIsObj" in the SOM Programming Reference, it shows how to query the SOM/WPS classname of the passed object which should give you an exact clue of what you are dealing with.
Another helpful SOM member function is "somIsA" which will allow you to check if an object is of a given class or a derived class thereof:
if (pObject->somIsA(_WPFolder)) will tell you if the passed object is a folder or a derived class thereof. Don't worry about WPFolder class
replacements: the SOM runtime will detect if WPFolder class has been replaced by something else. There never is a need to code the check against a replacement class (you
won't need to do a if (pObject->somIsA(_XFolder)) if you have XWorkplace installed. SOM will find out by itself).
As to C++ vs. C bindings (I always prefer C++ even if I code in plain C):
C++ bindings: pObject->somIsA(_WPFolder)
C bindings: _somIsA(pObject,_WPFolder)