wxWindows的事件表机制
来源:互联网 发布:一垒二垒三垒 知乎 编辑:程序博客网 时间:2024/04/29 22:41
以下摘自wxWidgets使用手册
挂载事件表
你并不一定非要实现继承自某个类的新类,才可以改变它的事件表。对于那些继承自wxWindow的类来说,有另外一种可取代的方法。你可以通过实现一个新的直接继承自wxEvtHandler的新类,然后定义这个新类事件表,然后使用wxWindow::PushEventHandler函数将这个事件表压入到某个窗口类的事件表栈中。最后压入的那个事件表在事件匹配过程中将会被最先匹配,如果在其中没有匹配到对应的事件处理过程,那么栈中以前的事件表仍将被匹配,如此类推。你还可以用wxWindow::PopEventHandler函数来弹出最顶层的事件表,如果你给wxWindow:: PopEventHandler函数传递的是True的参数,那么这个弹出的事件表将被删除。
这种方法可以避免大量的类重载,也使不同的类的实例共享同一个事件表成为可能。
有时候,你需要手动调用窗口类的事件表,这时候你应该使用wxWindow::GetEventHandler方法,而不是直接使用调用这个窗口类的成员函数。虽然wxWindow::GetEventHandler通常返回这个窗口类本身。但是如果你之前曾经使用 PushEventHandler压入另外一个事件表,那么函数将会返回处于最顶层的事件表。因此使用wxWindow:: GetEventHandler函数才可以保证事件被正确的处理。
PushEventHandler的方法通常用来临时的或者永久的改变图形界面的行为。举例来说,加入你想在你的应用程序实现对话框编辑的功能。你可以捕获这个对话框和它的内部控件的所有的鼠标事件,先使用你自己的事件表处理这些事件,来进行类似拖拽控件,改变控件大小以及移动控件动作。这在联机教学中也是很有用技术。你可以在你自己的事件表中过滤收到的事件,如果是可以接受的,则调用wxEvent::Skip函数正常处理。
PS:看到这,我十分的兴奋,我测试了一下这个功能,的确很爽.
- wxWindows的事件表机制
- JSLIU 的 wxWindows 入门
- wxWindows的OpenGL全屏
- JSLIU 的 wxWindows 入门
- JSLIU 的 wxWindows 入门
- JSLIU 的 wxWindows 入门
- JSLIU 的 wxWindows 入门
- wxWindows
- 基于wxWindows的“hello world”
- 简单的文本编辑器 - wxWindows编程事例
- wxWindows 最简单的Hello World程序
- inux下wxWidgets(wxWindows)的安装
- C#的事件机制
- C#的事件机制
- C#的事件机制
- Remoting的事件机制
- C#的事件机制
- C#的事件机制
- Asc&Chr Converter v1.0.vbs
- RegisterWindowMessage
- 帮你免于失业的十大软件技术(转载)
- 凯恩帝——研祥
- http 回应头的闷事
- wxWindows的事件表机制
- VB.NET感想
- ubuntu下用samba实现windows与linux文件共享(转载)
- JAVA实现RSA非对称加密算法
- MFC编码注意(2)
- 上学之后看过的书(需要更新)
- java.util.properties使用总结
- jQuery - 综合实例 - 下拉列表框打开指定网站
- 知名站点技术架构大曝光之Flickr