wxWindows的事件表机制

翻译|其它|编辑:郝浩|2007-10-29 09:41:25.000|阅读 895 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

       你并不一定非要实现继承自某个类的新类,才可以改变它的事件表。对于那些继承自 wxWindow 的类来说,有另外一种可取代的方法。你可以通过实现一个新的直接继承自 wxEvtHandler 的新类,然后定义这个新类事件表,然后使用 wxWindow::PushEventHandler 函数将这个事件表压入到某个窗口类的事件表栈中。最后压入的那个事件表在事件匹配过程中将会被最先匹配,如果在其中没有匹配到对应的事件处理过程,那么栈中以前的事件表仍将被匹配,如此类推。你还可以用 wxWindow::PopEventHandler 函数来弹出最顶层的事件表,如果你给 wxWindow:: PopEventHandler 函数传递的是 True 的参数,那么这个弹出的事件表将被删除。


       这种方法可以避免大量的类重载,也使不同的类的实例共享同一个事件表成为可能。


       有时候,你需要手动调用窗口类的事件表,这时候你应该使用 wxWindow::GetEventHandler 方法,而不是直接使用调用这个窗口类的成员函数。虽然 wxWindow::GetEventHandler 通常返回这个窗口类本身。但是如果你之前曾经使用 PushEventHandler 压入另外一个事件表,那么函数将会返回处于最顶层的事件表。因此使用 wxWindow:: GetEventHandler 函数才可以保证事件被正确的处理。
PushEventHandler 的方法通常用来临时的或者永久的改变图形界面的行为。举例来说,加入你想在你的应用程序实现对话框编辑的功能。你可以捕获这个对话框和它的内部控件的所有的鼠标事件,先使用你自己的事件表处理这些事件,来进行类似拖拽控件,改变控件大小以及移动控件动作。这在联机教学中也是很有用技术。你可以在你自己的事件表中过滤收到的事件,如果是可以接受的,则调用 wxEvent::Skip 函数正常处理。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:csdn

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP