将wxMouseEvent传播到wxWidget中的基类

时间:2016-01-21 12:47:04

标签: c++ event-handling wxwidgets

我有一个派生类,我希望根据bool参数跳过鼠标滚轮事件。因此,如果我设置bScroll = true,我希望基类Bar处理Scrollwheel事件。如果bScroll = false我想要忽略它们。 使用下面的代码,事件永远不会到达基类OnMouseWheel函数。这是某种传播问题吗? 我怎样才能解决这个问题? 谢谢!

class Foo : public Bar
{
 public: 
 Foo(wxWindow *pParent, bool bScroll = true) : Bar(pParent)
 { 
  m_scroll = bScroll;
 }
 bool m_scroll;
 protected:

 virtual void OnMouseWheel(wxMouseEvent& roEvent)
 {
  if(m_scroll)
   roEvent.Skip();
 }
};

2 个答案:

答案 0 :(得分:1)

正确的解决方案不是使用虚拟功能,而是使用非虚拟功能,正确Connect()Bind() Foo::OnMouseWheel()Bar::OnMouseWheel()。 然后做if(m_scroll) roEvent.Skip();就足够了。 见Event Handlers vs Virtual Methods

答案 1 :(得分:0)

if(m_scroll)roEvent.Skip(); else Bar :: OnMouseWheel(roEvent);