gNew deprecated, ok, but NewObj generates compiler error
-
Hi, I am working my way up from C4D R16, yes, I have all C4D Studio versions R13-R23, but I really want this to work.
SDK = C4D R16
Here is the code://///// The customGUI's data class /////////////// class SliderData : public CustomGuiData { typedef CustomGuiData super; public: virtual Int32 GetId() { return LIBRAY_ID; } //Gets the ID# we defined at the top for this gizmo virtual CDialog *Alloc(const BaseContainer &settings) { // Next line compiler complains GeDialog *dlg = gNew MyCustomGui(settings, GetPlugin()); if (!dlg) return NULL; return dlg->Get(); } virtual void Free(CDialog *dlg, void *ud) { if (dlg) { // Old does not work //gDelete((GeDialog*&) dlg); //Free the memory used by allocating dlg //New - no complaints DeleteObj((GeDialog*&) dlg); //Free the memory used by allocating dlg } }
So my question is - how can I rewrite the line containing gNew, so that it works again? (Works fine in R14).
I have tried with NewObj() and NewObjClear() - compiler still complains.
-Ingvar -
You create a custom GUI to display your custom data by deriving a class from iCustomGUI
class iMyCustomGUI : public iCustomGui ...
Then in you CustomGUIData derived class you implement the allocation by providing the derived iCustomGUI
CDialog* ReferencePointCustomGUI::Alloc(const BaseContainer& settings) { iMyCustomGUI* dlg = NewObjClear(iMyCustomGUI, settings, GetPlugin()); ...
you can find more details in the R20 SDK example customdata_customgui.cpp in folder cinema4dsdk\source\gui
Works OK for R16 upto at least R21 (I have not used/tested in more recent versions) -
Hi and thanks for this. It is my bad.. I didn't read the docs carefully enough / or did not understand the docs.
Now this works!
-Ingvar