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