我有一个MyFrame
其源自wxFrame
. A wxTextCtrl
被添加到此框架中。我可以处理吗EVT_KEY_DOWN
这个文本控件在框架中的位置?就像是,
BEGIN_EVENT_TABLE(wxTextCtrl, wxControl)
EVT_KEY_DOWN(MyFrame::OnKeyDown)
END_EVENT_TABLE()
上面的代码似乎不起作用。文档说这样的事件只能由事件发起的对象处理。所以我应该子类化wxTextCtrl
处理这个问题并以某种方式将信息发送到框架?
这样做的最佳方法是什么?
The wxCommandEvent
and wxNotifyEvent
来自子控件的类型事件设置为自动向上传播到父框架。但是,那wxKeyEvent
是从wxEvent
所以它不会传播到父框架。那么,您可以使用动态事件处理程序将某些事件路由到任何wxEvtHandler
派生对象。
在 wxWidgets 2.8 下你应该使用wxEvtHandler::Connect
。该方法被描述here http://docs.wxwidgets.org/stable/wx_wxevthandler.html#wxevthandlerconnect。您还可以看看这个示例代码 http://wiki.wxwidgets.org/Example_Of_Using_Connect_For_Events.
在 wxWidgets 2.9 和 SVN 下你应该使用wxEvtHandler::Bind<>
:
MyFrame::MyFrame(...)
{
m_textcontrol->Bind(wxEVT_KEY_DOWN, &MyFrame::OnTextControlKeyDown, this);
}
The wxEvtHandler::Bind<>
方法被描述here http://docs.wxwidgets.org/trunk/overview_events.html#overview_events_bind.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)