Tranfer Project from 11.5 to 12



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 08/12/2010 at 02:25, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   12 
    Platform:   Windows  ;   
    Language(s) :     C++  ;

    ---------
    Dev. System: Visual C++ 2008 Express Edition.

    When compiling our Project we get some errors.

    Can anybody help us ??

    Here is the source:

    #include "c4d.h"

    class ButtonAData : public CommandData
    {

    public:
              virtual Bool          Execute (BaseDocument *doc);
              virtual LONG          GetState(BaseDocument *doc);
              virtual Bool           RestoreLayout (void* secret);
              virtual void          Message (const BaseContainer& msg);
    };

    LONG ButtonAData::GetState(BaseDocument *doc)
    {
         return CMD_ENABLED;
    }

    Bool ButtonAData::RestoreLayout (void* secret)
    {
         return TRUE;
    }

    void ButtonAData::Message (const BaseContainer& msg)
    {

    }

    void LoopThroughObjects(BaseObject *bobj, BaseObject *altD, BaseObject *altN, BaseDocument *bdoc, AliasTrans *T)
         {
         while (bobj)
              {
              BaseObject *obj=(BaseObject* )bobj->GetClone(COPYFLAGS_NO_HIERARCHY, T);
              bdoc->InsertObject(obj, altD, altN, FALSE);
              altN=obj;
              altD=NULL;
              bdoc->AddUndo(UNDOTYPE_NEW, obj);
              if (bobj->GetDown()) altD=obj;
              LoopThroughObjects(bobj->GetDown(), altD, NULL, bdoc, T);
              bobj=bobj->GetNext();
              }
         }

    Bool ButtonAData::Execute(BaseDocument *doc)
    {
         LONG i;
         CHAR *Einer=NULL;
         String Inhalt="";
         BaseDocument* LoadScene=NULL;
         BaseMaterial *material, *cmat;
         StopAllThreads();
         
         AutoAlloc<BaseFile> SceneAPref;
         Filename Fname=Filename(GeGetPluginPath()+Filename("SceneRef.prf"));
         if (SceneAPref->Open(Fname, FILEOPEN_READ, FILEDIALOG_NONE))
              {
              Einer = ( CHAR * )GeAlloc( sizeof (CHAR)*300);
              for (i=0; i<300; i++)
                   {
                   if (SceneAPref->ReadChar(Einer) && i>3) Inhalt+=String(Einer);
                   }
              GeFree(Einer);
              if (Inhalt!="")
                   {
                   Fname.SetString(Inhalt);
                   LoadScene=LoadDocument(Fname, SCENEFILTER_OBJECTS | SCENEFILTER_MATERIALS, NULL);
                   if (LoadScene)
                        {
                        AutoAlloc <AliasTrans> trans;
                        if (!trans || !trans->Init(LoadScene)) return FALSE;
                        
                        doc->StartUndo();
                        material = LoadScene->GetFirstMaterial();
                        while (material)
                             {
                             cmat = (BaseMaterial* )material->GetClone(COPYFLAGS_0, trans);
                             doc->InsertMaterial(cmat, NULL, TRUE);
                             doc->AddUndo(UNDOTYPE_NEW, cmat);
                             material=material->GetNext();
                             }
                        doc->EndUndo();
                        doc->StartUndo();
                        LoopThroughObjects (LoadScene->GetFirstObject(), NULL, NULL, doc, trans);
                        doc->EndUndo();
                        EventAdd();
                        KillDocument(LoadScene);
                        LoadScene=NULL;
                        }
                   }
              }     
         return TRUE;
    }

    #define ID_BUTA 1017169

    Bool RegisterButtonACommand(void)
    {
         return RegisterCommandPlugin(ID_BUTA,"Scene Loader A",0,AutoBitmap("ButtonA.tif"),String("Scene Loader A"),gNew ButtonAData);
    }

    We get these Results:

    1>c:\program files\maxon\cinema 4d r12\plugins\cinema4dsdk\source ool\buttona.cpp(11) : warning C4263: 'LONG ButtonAData::Message(const BaseContainer &,BaseContainer &)': Memberfunktion überschreibt keine virtuelle Memberfunktion einer Basisklasse
    1>c:\program files\maxon\cinema 4d r12\plugins\cinema4dsdk\source ool\buttona.cpp(12) : error C4264: 'Bool CommandData::Message(LONG,void * )': Keine Überschreibung für virtuelle Memberfunktion der Basis 'CommandData' verfügbar; die Funktion wird ausgeblendet
    1>        c:\.....\c4d_commanddata.h(47) : Siehe Deklaration von 'CommandData::Message'
    1>        c:\.....\c4d_commanddata.h(35) : Siehe Deklaration von 'CommandData'
    1>c:\.....\source ool\buttona.cpp(25) : error C2511: 'void ButtonAData::Message(const BaseContainer &)': Überladene Memberfunktion nicht in 'ButtonAData' gefunden
    1>        c:\.....\source ool\buttona.cpp(3) : Siehe Deklaration von 'ButtonAData'

    Thanks for any help

    Ronald



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 08/12/2010 at 02:59, xxxxxxxx wrote:

    Please have a look at the declaration for CommandData::Message. Your declaration doesn't match the one of CommandData.

    It should be:

    virtual Bool Message(LONG type, void* data);
    

    cheers,
    Matthias



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 08/12/2010 at 05:57, xxxxxxxx wrote:

    Thank you for your quick answer.

    I could not interpret your answer.
    Could you please be so kind and korrekt the line(s) in my Code.

    Thank 1000 times



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 09/12/2010 at 02:21, xxxxxxxx wrote:

    Since you are not doing anything in CommandData::Message you simply can remove it from the class (declaration and defintion).

    cheers,
    Matthias


Log in to reply