Catch Enter-message in Subdialog and GeDialog
-
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