将 wxMouseEvent 传播到 wxWidget 中的基类



>我有一个派生类,我想根据bool参数跳过鼠标滚轮事件。所以如果我设置bScroll = true,我希望基类 Bar 处理滚轮事件。如果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();
 }
};

正确的解决方案不是使用虚函数,而是相反,使用非虚函数并正确Connect()Bind() Foo::OnMouseWheel()Bar::OnMouseWheel()。然后做if(m_scroll) roEvent.Skip();就足够了。请参阅事件处理程序与虚拟方法

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

相关内容

  • 没有找到相关文章

最新更新