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

    Getting KeyDown Event

    Scheduled Pinned Locked Moved SDK Help
    3 Posts 0 Posters 299 Views
    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 Offline
      Helper
      last edited by

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

      On 05/01/2007 at 21:01, xxxxxxxx wrote:

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

      ---------
      Hello ...

      In my dialog plugin ...
      I want to make a calculation when the user is entering data into a textbox ...
      So I try to know when the user is pressing the keys to enter data ... but I can't ...
      I can only know when the user input is done and the focus is moved to another textbox ... I hope you see what I mean ...
      In the otherwords ...
      I want to do some process for KEYDOWN event ...
      But I can only make it in LOSTFOCUS event ...

      How can I solve it ...?
      Or is that simply what we can't in C4D?

      Wishing you'll do me a favor ...
      Zaw Min Tun

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

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

        On 09/01/2007 at 03:20, xxxxxxxx wrote:

        you could try to the pressed keys within Message

          
        LONG AsyncDialog::Message(const BaseContainer &msg;,BaseContainer &result;)  
        {  
             switch (msg.GetId())  
             {  
                  case BFM_INPUT:  
                       if(msg.GetLong(BFM_INPUT_DEVICE) == BFM_INPUT_KEYBOARD)  
                       {  
                            String input = msg.GetString(BFM_INPUT_ASC);  
                            GePrint(input);  
                       }  
                       break;  
             }  
             return GeDialog::Message(msg,result);  
        }  
        

        cheers,
        Matthias

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

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

          On 11/01/2007 at 00:44, xxxxxxxx wrote:

          Thank you Matthias ...
          I tried it and this is what I found out ...

          The following code segment always shows 1 and 4 in console ...

          ///////
          LONG dlgMine::Message(const BaseContainer& msg, BaseContainer& result)
          {
               GePrint("1");
              switch (msg.GetId())
              {
                    GePrint("2");
               case BFM_INPUT:
                    if(msg.GetLong(BFM_INPUT_DEVICE) == BFM_INPUT_KEYBOARD)
                  {
                         GePrint("3");
                         String input = msg.GetString(BFM_INPUT_ASC);
                       GePrint(input);
                  }
                  break;
              }
               GePrint("4");
               return GeDialog::Message(msg,result);
          }
          ///////

          So I doubt that msg.GetId() is always returning 0 ...
          So I tried this below ...

          ///////

          LONG dlgMine::Message(const BaseContainer& msg, BaseContainer& result)
          {     
               GePrint(LongToString(msg.GetId()));
              switch(msg.GetId())
              {
               case BFM_INPUT:
                    if(msg.GetLong(BFM_INPUT_DEVICE) == BFM_INPUT_KEYBOARD)
                  {
                         String input = msg.GetString(BFM_INPUT_ASC);
                  }
                  break;
              }
               return GeDialog::Message(msg,result);
          }
          ///////

          But this time ... console is showing a very large numbers (like 1667853926,1668846437) all the time ... So they are not surely 0s ...
          So why aren't the code lines in switch are not running ...?
          I'm a little confusing ...
          Thank you for code segment ...
          It makes me curious about C4D a lot !!!

          Wishing you all the best ... especially the happiness ...
          Zaw Min Tun

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