THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 31/12/2004 at 21:21, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 8.012
Platform: Windows ;
Language(s) : C++ ;
---------
I realize that the TreeViewCustomGUI isn't *really* supported in 8.012, but it is available and does work - well, mostly.
When a tree is unfolded and a mouse button is depressed while the mouse is in an open area (not over an item), all of the hierarchy is processed with the inevitable crash of Cinema 4D (unless you wait for the entire hierarchy to process - which is several thousand items).
This does not occur in later versions of Cinema 4D, only 8.012.
Here is my TreeViewFunctions code:
class TVFunctions : public TreeViewFunctions
{
public:
virtual void* GetFirst(void *root, void *userdata)
{
return ((TreeRoot* )root)->GetFirst();
}
virtual void* GetNext(void *root, void *userdata, void *obj)
{
return ((RuntimeItem* )obj)->GetNext();
}
virtual void* GetPred(void *root, void *userdata, void *obj)
{
return ((RuntimeItem* )obj)->GetPrev();
}
virtual void* GetDown(void *root, void *userdata, void *obj)
{
return ((RuntimeItem* )obj)->GetChild();
}
virtual Bool IsSelected(void *root, void *userdata, void *obj)
{
return (RuntimeItem* )obj == ((TreeRoot* )root)->GetSelected();
}
virtual String GetName(void *root, void *userdata, void *obj)
{
return ((RuntimeItem* )obj)->GetSimpleName();
}
virtual void SetName(void *root, void* userdata, void* obj, const String& str)
{
}
virtual LONG GetId(void *root, void *userdata, void *obj)
{
return ((RuntimeItem* )obj)->GetID();
}
virtual void GetColors(void *root, void *userdata, void *obj, GeData* pNormal, GeData* pSelected)
{
*pNormal = ((TreeRoot* )root)->GetColorNormal(((RuntimeItem* )obj)->GetType());
*pSelected = ((TreeRoot* )root)->GetColorSelected(((RuntimeItem* )obj)->GetType());
}
virtual Bool IsOpened(void *root, void *userdata, void *obj)
{
return ((RuntimeItem* )obj)->GetBit(RTFLAGS_EXPANDED);
}
virtual void Open(void *root, void *userdata, void *obj, Bool onoff)
{
if (onoff) ((RuntimeItem* )obj)->SetBit(RTFLAGS_EXPANDED);
else ((RuntimeItem* )obj)->DelBit(RTFLAGS_EXPANDED);
}
virtual void Select(void *root, void *userdata, void *obj, LONG mode)
{
((TreeRoot* )root)->SetSelected((RuntimeItem* )obj);
}
virtual LONG AcceptDragObject(void *root, void *userdata, void *obj, LONG dragtype, void *dragobject, Bool &bAllowCopy;)
{
return 0;
}
virtual void InsertObject(void *root, void *userdata, void *obj, LONG dragtype, void *dragobject, LONG insertmode, Bool bCopy)
{
}
virtual LONG GetDragType(void *root, void *userdata, void *obj)
{
return NOTOK;
}
virtual Bool DoubleClick(void *root, void *userdata, void *obj, LONG col, MouseInfo *mouseinfo)
{
return ((TreeRoot* )root)->ProcessRuntimeItem((RuntimeItem* )obj);
}
virtual Bool MouseDown(void *root, void *userdata, void *obj, LONG col, MouseInfo *mouseinfo, Bool rightButton)
{
return FALSE;
}
virtual LONG GetColumnWidth(void *root, void *userdata, void *obj, LONG col)
{
return 0;
}
virtual LONG GetLineHeight(void *root, void *userdata, void *obj, LONG col)
{
return 0;
}
virtual void DrawCell(void *root, void *userdata, void *obj, LONG col, DrawInfo *drawinfo, LONG bgColor)
{
}
} functable;
Have no clue what is happening or how to prevent it.
Thanks,
Robert