THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 26/01/2006 at 11:47, xxxxxxxx wrote:
You can do this by ignoring any element whose groupid is ID_BASEOBJECT_GROUP1 or whose group had that groupid etc. This code will show you how it looks:
AutoAlloc<Description> desc;
doc->GetFirstObject()->GetDescription(desc, 0);
void* h = desc->BrowseInit();
const BaseContainer* bc = 0;
DescID id, groupid, scope;
while (desc->GetNext(h, &bc, id, groupid))
{
GePrint(bc->GetString(DESC_NAME) + " " + DescIDToString(id) + " : " + DescIDToString(groupid));
GePrint(LongToString(groupid == DescID(ID_BASEOBJECT_GROUP1)));
}
desc->BrowseFree(h);
The test in this code is incomplete of course. You will have to keep track of the groupid ancestry as you go along, so that group within groups will work. (Or you could do it the brute-force way and jump directly from GROUP1 to ID_OBJECTPROPERTIES, or the next group of interest (a bit unsafe).