Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    SendMessage

    SDK Help
    0
    10
    1.4k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helper
      last edited by

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

      On 16/02/2003 at 11:33, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   8.012 
      Platform:      
      Language(s) :   C.O.F.F.E.E  ;

      ---------
      Hi
      in the documentation of COFFEE there's a member's function for the class GeBaseDialog described:
      [bool] SendMessage( [int] id, [BaseContainer] msg);
      This is a member of GeBaseDialog. It is funny... but when I call this:
       println(instanceof(this,GeBaseDialog));
      the console prints TRUE (or 1)
      but if I write
       SendMessage(Tabgroup,msg);
      instead of the println(instanceof(this,GeBaseDialog));, the compiler complains.
      this->SendMessage(Tabgroup,msg);
      Doesn't work, too - member not found.
      Any explanation for that?
       
      cya

      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

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

        On 17/02/2003 at 13:31, xxxxxxxx wrote:

        HI
        I don't know how to express this... I am kinda disapointed.
        No answers.  Ok, I gave no example, but I'll do that now.
        If I could perform SendMessage as documentated I could (maybe) switch the tab manually. I catched the message the occurs when I am changing the tabs and it seems to be pretty simple... IF I COULD SEND A MESSAGE.
        So - why does this not work???

            
            
            
            
            //demo for non working function: SendMessage  
            // be sure to use a unique ID obtained from [www.plugincafe.com](http://www.plugincafe.com)  
            var PLUGIN_ID = 1000161;  
            // be sure to use a unique ID obtained from [www.plugincafe.com](http://www.plugincafe.com)
            
            
            
            
            include "c4d_symbols.h"
            
            
            
            
            // ******** make a dialog class **************  
            var resource;
            
            
            
            
            class MyDialog : GeBaseDialog  
            {  
             public:  
              MyDialog();  
              CreateLayout();  
            }
            
            
            
            
            MyDialog::MyDialog()  
            {  
             SendMessage(0,NULL);  
             super(0);  
            }
            
            
            
            
            MyDialog::CreateLayout()  
            {  
            // return LoadDialogResource(R_HELLOWORLD,resource,0);  
             return TRUE;  
            }
            
            
            
            
              
            // ****** register plugin in menu **************  
            class MyMenuPlugin : MenuPlugin  
            {  
             public:  
              MyMenuPlugin();
            
            
            
            
              GetID();  
              GetName();  
              GetHelp();  
              Execute(doc);  
            }
            
            
            
            
            MyMenuPlugin::MyMenuPlugin() { super(); }  
            MyMenuPlugin::GetID()        { return PLUGIN_ID; }  
            MyMenuPlugin::GetName()      { return "SendMessage"; }  
            MyMenuPlugin::GetHelp()      { return "Shows nonworking SendMessageFunction"; }
            
            
            
            
            MyMenuPlugin::Execute(doc)  
            {  
             var d = new(MyDialog);  
             d->Open(FALSE,-1,-1);  
            }
            
            
            
            
            main()  
            {
            
            
            
            
              
             Register(MyMenuPlugin);  
            }  
            
        

        Compiling this does not work - it complains about "SendMessage". It doesn't know this function. It is important to me that I find a way to switch between layouts. Anyhow - why does this not work??? Is there a workaround?

        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

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

          On 17/02/2003 at 16:54, xxxxxxxx wrote:

          Sorry I'm no COFFEE coder, but perhaps this is a simple type mismatch? So try to send a BaseContainer instead of NULL (just an idea) :

            
          var bc = new(BaseContainer);  
          SendMessage (0, bc);  
          

          Ciao,
          Marcus

          1 Reply Last reply Reply Quote 0
          • H
            Helper
            last edited by

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

            On 17/02/2003 at 16:57, xxxxxxxx wrote:

            ... But I think you have to be careful with your IDs. The documentation says, that SendMessage(...) is used for internal messages. If have bad luck, your message will be read as an internal message - with an unfitting BaseContainer resulting a nice crash. However, I'm just guessing...

            1 Reply Last reply Reply Quote 0
            • H
              Helper
              last edited by

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

              On 17/02/2003 at 17:07, xxxxxxxx wrote:

              The point is, that the compiler don't even know this function. It can't compile the file. Try to use Sendmessage. Just try it - it won't compile.
              If I could send a message I know very exactly what to send, but it just don't work.

              1 Reply Last reply Reply Quote 0
              • H
                Helper
                last edited by

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

                On 17/02/2003 at 17:42, xxxxxxxx wrote:

                Ok, I tried it and it didn't work in R8. Either this member is not implemented or somewhat "private" so that only C4D is able to call it. I don't know.

                If I did understand you, you want to switch between tabs? Can't you use GeBaseDialog.Activate(...) for this? Sorry, I don't have no clue how you can switch between tabs in COFFEE...

                Ciao,
                Marcus

                1 Reply Last reply Reply Quote 0
                • H
                  Helper
                  last edited by

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

                  On 18/02/2003 at 02:11, xxxxxxxx wrote:

                  This would do the job... at least this is the Message that I can catch when the tabs are changed. So sending this to the tabgroup should do the same I guess.... this->Activate(ID) does not have any effect. I have searched this forum, and an answer was that you cannot do this in COFFEE. But the answer was not that SendMessage does not work!
                  Btw. If it was declared private the compiler would say that you have no access, but it seems to me that it is not implemented.

                      
                      
                      ActivateTab(Tabgroup,Tabid) {  
                       var msg=new(BaseContainer);  
                       msg->SetId(1648444244);  
                       msg->InsData(1835362660,Tabgroup);  
                       msg->InsData(1835365985,Tabid);  
                       SendMessage(Tabgroup,msg);  
                      }
                  
                  1 Reply Last reply Reply Quote 0
                  • H
                    Helper
                    last edited by

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

                    On 18/02/2003 at 02:21, xxxxxxxx wrote:

                    Ok one last try: What if you use GeBaseDialog.Message(msg)? Sorry I should try it by myself, instead of guessing around, but I really don't have the time.

                    All I can say is, that SendMessage(..) is implemented in C++, pretty useless for you, I know...

                    Ciao,
                    Marcus

                    PS: Mikael, David - please help

                    1 Reply Last reply Reply Quote 0
                    • H
                      Helper
                      last edited by

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

                      On 18/02/2003 at 04:09, xxxxxxxx wrote:

                      Have tried that already, but as long as the message is not forwarded to its childs it is pretty useless.
                      I have worked out a workaround now, so this is not as important to me... although it would be easier for me to switch between the groups, it is also working when I delete the group and insert the new one. Works fine so far...
                      Thanks for your help anyway. Maybe you could try to write a wrapper in C++ that can be called from COFFEE, forwarding the basedialog ("this"), the ID and the msg.... so it would look like the original call - with the exception that coffee works with all configurations (R6-R8, Mac/PC) and C++... only with the version it was compiled for.
                      Btw. It doesn't seem to me that there are lot's of COFFEE programmers out there, although the language is quite easy to learn. Any reason for that??
                       
                      cya

                      1 Reply Last reply Reply Quote 0
                      • H
                        Helper
                        last edited by

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

                        On 18/02/2003 at 07:03, xxxxxxxx wrote:

                        The main reason, why I don't use COFFEE is the lack of functionality. The second reason: I love C++ 🙂 It's well-thought and fast and most projects I do are in C++.

                        But the disadvantages for plugin programming are obvious, but then there is reason 1...

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post