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