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
    • Recent
    • Tags
    • Users
    • Login

    Catch Enter-message in Subdialog and GeDialog

    Scheduled Pinned Locked Moved SDK Help
    1 Posts 0 Posters 172 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 20/11/2009 at 04:28, xxxxxxxx wrote:

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

      ---------
      Hello,

      my problem is,that I sometimes get a message for Enter-Key in my TreeView and sometimes not. I have a maindialog- and a subdialogclass.

      SubDialog:

        
      class MySubDialog1: public SubDialog   
      {   
      private:   
                TreeViewCustomGui* m_tree;   
                TreeViewFunctions m_functable;   
        
      public:   
           MySubDialog1()   
           {   
                m_tree = NULL;   
           }   
        
           virtual Bool CreateLayout(void)   
           {   
                BaseContainer treedata;   
        
                treedata.SetLong(TREEVIEW_BORDER,BORDER_BLACK);   
                treedata.SetBool(TREEVIEW_HIDE_LINES,TRUE);   
                treedata.SetBool(TREEVIEW_RESIZE_HEADER,TRUE);   
                treedata.SetBool(TREEVIEW_HAS_HEADER,FALSE);   
      #if API_VERSION >= 9700   
                treedata.SetBool(TREEVIEW_ALTERNATE_BG,TRUE);   
      #endif   
                treedata.SetBool(TREEVIEW_CURSORKEYS, TRUE); TODO enable this if tree redraws too slow   
        
                GroupBegin(GROUP_TREE,BFV_SCALEFIT|BFH_SCALEFIT,1,0,"",0);   
                {   
                     m_tree = (TreeViewCustomGui* )AddCustomGui(TREE_RESULTS,CUSTOMGUI_TREEVIEW,String(),BFH_SCALEFIT|BFV_SCALEFIT,0,0,treedata);   
                     m_tree->SetRoot(GetActiveDocument(), &m;_functable, NULL);   
                     BaseContainer layout;   
                     layout.SetLong(1,LV_USER);   
                     layout.SetLong(2,LV_TREE);   
                     layout.SetLong(3,LV_USER);   
                     layout.SetLong(4,LV_USER);   
                     m_tree->SetLayout(4,layout);   
                        
                     m_tree->SetColumnWidthUser(1, 18);                  
                }   
                GroupEnd();   
        
                return TRUE;   
           }   
        
           void activate()   
           {   
                if(m_tree)   
                     Activate(TREE_RESULTS);   
           }   
        
        
           TreeViewCustomGui* getTree()   
           {   
                return m_tree;   
           }   
        
           ResultTree* getResultTree()   
           {   
                return &m;_functable;   
           }   
        
              
              
           virtual LONG Message(const BaseContainer& msg, BaseContainer& result)   
           {   
                //GePrint(LongToString(msg.GetId()));   
                if(msg.GetLong(BFM_ACTION_ID) == 1)   
                {   
                     //GePrint("enter");   
                }   
        
                if(msg.GetId() == BFM_INPUT)   
                {   
                     if ( msg.GetLong(BFM_INPUT_CHANNEL) == KEY_ENTER)   
                     {   
                          //GePrint("enter+shift");   
                     }   
                }   
        
                return SubDialog::Message(msg,result);   
           }   
      };   
      

      and connect the subdialog in my .res of the main dialog with SUBDIALOG TREE1 { SCALE_H; SCALE_V; } and AttachSubDialog(&subdialog;,TREE1);.

      if I press the enterbutton and i haven't klicked in the treeview or activated(Focus in MainDialog), i can get a message for enter key and catch it with :

        
      if(msg.GetLong(BFM_ACTION_ID) == 1)   
      

      But i can't catch a message for Shift+Enter:

        
      if(msg.GetId() == BFM_INPUT)   
           {   
                     if ( msg.GetLong(BFM_INPUT_CHANNEL) == KEY_ENTER)   
      

      And after Clicking or Activation the treeview(Focus in tree) it`s vice versa.

      Is there a possibility to catch the same message for both focus cases?
      Any ideas?

      Thanks, coffeemax

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