我做了一个wxwidgets表格使用wxFormBuilder,我试图抛出mousewheel事件的对象。问题是事件没有被抛出,所以我想问你是否应该有一些额外的设置。该对象具有事件表这样事件不会抛出C++与wxwidgets
BEGIN_EVENT_TABLE(MyObj, wxScrolledWindow)
EVT_MOUSEWHEEL(MyObj::OnMouseWheel)
END_EVENT_TABLE();
而且它被初始化这样:
myObjInstance = new MyObj(this, ID_MYOBJ, wxPoint(10, 10), wxSize(30,30), 0);
我注意到,在wxFormBuilder,当加入从GUI事件,function Connect使用与生成此输出
myObjInstance ->Connect(wxEVT_MOTION, wxMouseEventHandler(MyFrame::TestMouseOnverTheEdit), NULL, this);
但我不能使用它作为我的事件处理函数OnMouseWheel在类MyObj中,它受到保护。
我也用这个对象和事件在wxDev-C++做了一个框架,并且引发了这个事件。不同的是,由wxFormBuilder创建的表单具有多个sizer和面板,而wxDev-C++中的表单没有。有一个similar problem解决了,但我仍然不知道该怎么办。谢谢。
编辑: 处理程序的签名:
void OnMouseWheel(wxMouseEvent & AwxEvent);
谢谢您的回复。 1.我使OnMouseWheel方法公开并尝试了myObjInstance - > Connect(wxEVT_MOTION,wxMouseEventHandler(MyObj :: OnMouseWheel),NULL,this);没有变化,或者Connect与它无关? 2. MyObj是一个特殊的对象,它不在标准的wxWidgets库中,但不应该是这个问题,因为正如我之前写的,当该窗体由wxDev-C++创建时,监听器为这个对象工作。 3.签名是你所说的,void OnMouseWheel(wxMouseEvent&AwxEvent); – DropDropped
我没有注意到你回复了我,因为你刚刚编辑了你的帖子。无论如何,我会回复修改的问题编号2. - MyObj扩展了wxScrolledWindow,我没有建议它不。我已经说过两次了,它的监听器在wxDev-C++生成图形用户界面(我也在使用事件表)时工作。 3.起初我不知道我不能使用事件表和Connect()。这应该是全部,谢谢你的时间。 – DropDropped