2012-12-23 38 views
0

我正在努力与wxTreeCtrl的事件,并不能让他们触发。我想要更改选择事件触发并尝试查看treeCtrl代码示例。到目前为止,我有:wxTreeCtrl自定义事件

的.cpp

TopRightPanel::TopRightPanel(wxWindow *parent, wxSizer* sizer) 
: wxTreeCtrl(parent, 0, wxPoint(513, 0), wxSize(512, 384)) //wxPanel(parent, 513, 0, 512, 384) 
{ 
CreateControls(this);; 
} 



void TopRightPanel::CreateControls(wxTreeCtrl* parent) 
{ 
    rootId = wxTreeItemId(); 
    rootId = AddRoot("Particle Systems"); 
    wxTreeItemId root2Id = parent->AppendItem(rootId, "dlisjdslj"); 



parent->AppendItem(rootId, "Child 1"); 
} 

void TopRightPanel::OnSelChanged(wxTreeEvent& event) 
{ 

} 

    #if USE_GENERIC_TREECTRL 
    BEGIN_EVENT_TABLE(TopRightPanel, wxGenericTreeCtrl) 
    #else 
    BEGIN_EVENT_TABLE(TopRightPanel, wxTreeCtrl) 
    #endif 

EVT_TREE_SEL_CHANGED(TopRightPanel_Ctrl, TopRightPanel::OnSelChanged) 

END_EVENT_TABLE() 

#define TREE_EVENT_HANDLER(name)         \ 
void TopRightPanel::name(wxTreeEvent& event)      \ 
{                \ 
    LogEvent(wxT(#name), event);         \ 
    SetLastItem(wxTreeItemId());         \ 
    event.Skip();            \ 
} 

/*TREE_EVENT_HANDLER(OnBeginRDrag) 
TREE_EVENT_HANDLER(OnDeleteItem) 
TREE_EVENT_HANDLER(OnGetInfo) 
TREE_EVENT_HANDLER(OnSetInfo) 
TREE_EVENT_HANDLER(OnItemExpanded) 
TREE_EVENT_HANDLER(OnItemExpanding) 
TREE_EVENT_HANDLER(OnItemCollapsed)*/ 
//TREE_EVENT_HANDLER(OnSelChanged) 
//TREE_EVENT_HANDLER(OnSelChanging) 

#undef TREE_EVENT_HANDLER 

.H

class TopRightPanel : public wxTreeCtrl 
{ 
public: 
    TopRightPanel(wxWindow *parent, wxSizer *sizer); 
    void CreateControls(wxTreeCtrl *parent); 
    void CreateNewParent(wxTreeCtrl *parent); 
    void CreateNewChild(wxTreeCtrl *parent, wxTreeItemId *root); 
    void OnSelChanged(wxTreeEvent& event); 
    void LogEvent(const wxChar *name, const wxTreeEvent& event); 
    //void OnSelChanging(wxTreeEvent& event); 

private: 
    wxTreeItemId rootId; 
    //DECLARE_DYNAMIC_CLASS(TopRightPanel); 
    DECLARE_EVENT_TABLE() 
    /*void OnSetText(wxCommandEvent & event); 
    wxStaticText *m_text;*/ 

}; 
enum 
{ 
    TopRightPanel_Select = 6000, 
    TopRightPanel_Unselect, 
    TopRightPanel_Ctrl = 1000 
}; 

如果你能看到什么,我会很感激的建议。我刚刚通过尝试在OnSelChanged函数中放置断点来进行测试,但未达到此效果。

回答

1

您正在使用错误的控件ID。您创建TREECTRL与0的ID,而你的ID TopRightPanel_Ctrl创建事件接收器:

: wxTreeCtrl(parent, TopRightPanel_Ctrl, ... 
//     ^
//     | they need to match 
//     v 
EVT_TREE_SEL_CHANGED(TopRightPanel_Ctrl, ... 
+0

啊,非常感谢,完全忘了这一点。 – Bushes