Changing Tag logo

  • On 29/10/2015 at 13:44, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:    
    Language(s) :

    Hi everyones,

    There is a way to update or change during my tag execution the logo displayed in object manager?

    Or maybe can I slide the current logo top to bottom or left to right ? In this way i'll have juste one res .tif image file to load and just slide during  execution ?

    Thanks in advance for any help on this.

  • On 30/10/2015 at 13:16, xxxxxxxx wrote:


    you need to listen to MSG_GETCUSTOMICON in your tag's Message() function. The structure provided is GetCustomIconData.
    With this you can provide new icons or draw overlays.

  • On 31/10/2015 at 02:17, xxxxxxxx wrote:

    Great !! I looking about it and I'll give you a feel back.

    Thanks for all this informations ;-)

  • On 02/11/2015 at 03:53, xxxxxxxx wrote:

    Hello Andreas. Thank a lot for your informations. But i can not make it work.
    I tried by multiples way but it seems not in my capability yet. Did you have a example in SDK ? Maybe a link with more information about this ?

    last, in any other way maybe a code snippet. I know every ones belong here are very busy...

    I can not make my bitmap slide. I tried with this...

      if (type == MSG_GETCUSTOMICON){  
          GetCustomIconData().dat->x = 32;  

    But as you probably know this throw me EXCEPTION ERROR because I guess I don't catch the right object. I Should instantiate something but i can't find it in SDK doc.

    And I can not change my logo neither with this...

      if (type == MSG_GETCUSTOMICON){  
          GetCustomIconData().dat->bmp = AutoBitmap("whatever.tif");  

    Same problem, i guess i should instance or catch something and after apply my GetCustomIconData() with additional problem : I not sure on the way to pass it a new data bitmap.

    Thanks on any help on this. Everything else on my plugin seems to work. Soon I'll will asking for a complete review of my code if some are interested (I'm the one most interested!!)

  • On 02/11/2015 at 04:38, xxxxxxxx wrote:


    one problem with your code is, that you are creating a new GetCustomIconData structure of your own.
    Instead you should use the one passed with the message (data parameter, which get's cast to the datatype delivered by the message type).

    Here's a small Message() function as an example. Note that _iconBase and _iconOverlayed are two BaseBitmap pointers, that are initialized with two different icons during my startup code.

    Bool MyPlugin::Message(GeListNode* node, Int32 type, void* data)
      switch (type)
        GetCustomIconData* const gcid = static_cast<GetCustomIconData*>(data); // data pointer interpreted depending on message type
        if (!gcid || !gcid->dat || !_iconBase || !_iconOverlayed)
        BaseBitmap* const bmp = gcid->dat->bmp;
        if (bmp)
          // There's already an icon setup, copy your icon into the existing BaseBitmap
          GeData d;
          node->GetParameter(TAG_ICON_OVERLAY, d, DESCFLAGS_GET_0); // TAG_ICON_OVERLAY is a bool parameter in my tag description
          if (d.GetBool())
            _iconOverlayed->ScaleIt(bmp, 256, true, false);
            _iconBase->ScaleIt(bmp, 256, true, false);
          // No icon, yet, provide a new BaseBitmap
          gcid->dat->bmp = _iconBase;
        gcid->filled = true; // tell message sender, that you provided a new icon
      return SUPER::Message(node, type, data);

    I hope, this helps.

  • On 02/11/2015 at 04:50, xxxxxxxx wrote:

    Wahooo ! I'll give you feel back when I have understood this.
    Very interesting. Thanks

Log in to reply