gpt4 book ai didi

c++ - 将 wxMouseEvent 传播到 wxWidget 中的基类

转载 作者:行者123 更新时间:2023-11-28 05:52:32 24 4
gpt4 key购买 nike

我有一个派生类,我想在其中根据 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();
}
};

最佳答案

正确的解决方案不是使用虚函数,而是相反,使用非虚函数并且正确地使用 Connect()Bind() 两者 Foo::OnMouseWheel()Bar::OnMouseWheel()。然后执行 if(m_scroll) roEvent.Skip(); 就足够了。参见 Event Handlers vs Virtual Methods

关于c++ - 将 wxMouseEvent 传播到 wxWidget 中的基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34924258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com