CustomData and GUI Messaging
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 24/08/2004 at 15:30, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 8.503
Platform: Windows ; Mac ; Mac OSX ;
Language(s) : C++ ;---------
I need to do something very similar to the BUTTOM custom gui. I need to retrieve from the parent of the parameter some bitmaps that the parent is responsible for making ( like the bitmap returned from Message for BUTTON ). How do I initiate the Message to the parent?Best Regards,
darf -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 28/08/2004 at 00:32, xxxxxxxx wrote:
The bitmap button custom GUI (I assume that's what you mean) does it like this:
1. When you set the data for the bitmap button with a BitmapButtonStruct, a pointer to the object is included.
2. Then this object pointer is used to send a standard base list message, MSG_DESCRIPTION_GETBITMAP.
It wouldn't be possible to do this without step 1 since a custom GUI isn't restricted to the attributes manager; it can just as well be used in a standalone dialog when there's no parent object.
Here's a short review of the relevant code snippets:class iBitmapButtonCustomGui : public iBaseCustomGui { ... pObj; ... }; Bool iBitmapButtonCustomGui::SetData(const TriState<GeData> &tristate) { const BitmapButtonStruct *ll = static_cast<const BitmapButtonStruct*>( tristate.GetValue().GetCustomDataType(CUSTOMDATATYPE_BITMAPBUTTON)); if (ll) { pObj=ll->op; ... } ... InitValues(); return TRUE; } Bool iBitmapButtonCustomGui::InitValues(void) { if (pObj) { ... pObj->Message(MSG_DESCRIPTION_GETBITMAP,&rts); ... } return TRUE; } Bool iBitmapButtonCustomGui::Command(LONG id,const BaseContainer &msg) { switch (id) { case 1000: { BaseContainer m(msg); m.SetLong(BFM_ACTION_ID,GetId()); SendParentMessage(m); break; } ... } ... return iCustomGui::Command(id,msg); } Bool HostObjectData::GetDParameter(GeListNode *node, const DescID &id, GeData &t_data, LONG &flags) { switch(id[0].id) { ... case BITMAP_BUTTON_ID: { LONG dirty = 0; BitmapButtonStruct bbs = BitmapButtonStruct(static_cast<PluginObject*>(node), id, dirty); t_data = GeData(CUSTOMDATATYPE_BITMAPBUTTON,bbs); flags |= DESCFLAGS_PARAM_GET; break; } } return ObjectData::GetDParameter(node, id, t_data, flags); }
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 29/08/2004 at 07:16, xxxxxxxx wrote:
Thank you!
Regards,
darf -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 29/08/2004 at 15:10, xxxxxxxx wrote:
In the HostObjectData::GetDParameter you allocate a new custom data. Should we be freeing the one that was previously there or does C4D do that internally?
Regards,
darf -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 29/08/2004 at 23:16, xxxxxxxx wrote:
No, that is automatic. (In fact, since there's no non-automatic allocation, i.e. raw new/delete, in the above function, just temporaries and operator=, it's all just C++ memory management.)
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/09/2004 at 12:02, xxxxxxxx wrote:
f**king Brilliant.
Happy.
darf