博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hieroglyph3 框架分析2
阅读量:5902 次
发布时间:2019-06-19

本文共 2252 字,大约阅读时间需要 7 分钟。

前篇的框架中,有一个事件处理函数:

virtual bool HandleEvent( IEvent* pEvent );

这个回调函数用于在自己的应用程序中响应各种事件, IEvent的定义如下:

class IEvent     {
public: virtual std::wstring GetEventName( ) = 0; virtual eEVENT GetEventType( ) = 0; };

主要用到GetEventType来获取事件类型,目前支持的有:

enum eEVENT     {
//GUI_CURSOR_OVER, //GUI_CURSOR_ENTER, //GUI_CURSOR_LEAVE, //GUI_CURSOR_BUTTON_DOWN, //GUI_CURSOR_BUTTON_PRESSED, //GUI_CURSOR_BUTTON_UP, //GUI_UI_BUTTON_PRESSED, RENDER_FRAME_START, SYSTEM_LBUTTON_DOWN, SYSTEM_LBUTTON_UP, SYSTEM_MBUTTON_DOWN, SYSTEM_MBUTTON_UP, SYSTEM_RBUTTON_DOWN, SYSTEM_RBUTTON_UP, SYSTEM_MOUSE_LEAVE, SYSTEM_MOUSE_WHEEL, SYSTEM_MOUSE_MOVE, SYSTEM_KEYBOARD_KEYDOWN, SYSTEM_KEYBOARD_KEYUP, SYSTEM_KEYBOARD_CHAR, WINDOW_RESIZE, LOG_MESSAGE, INFO_MESSAGE, ERROR_MESSAGE, //TEXT_CONTROLLER_STATE_REQUEST, //ENTITY3D_CONTROLLER_STATE_REQUEST, NUM_EVENTS };

你可以根据需要自行添加.

让我们来看一个示例:

View Code
1 bool App::HandleEvent( IEvent* pEvent )  2 {
3 eEVENT e = pEvent->GetEventType(); 4 5 if ( e == SYSTEM_KEYBOARD_KEYDOWN ) 6 {
7 EvtKeyDown* pKeyDown = (EvtKeyDown*)pEvent; 8 9 unsigned int key = pKeyDown->GetCharacterCode(); 10 11 return( true ); 12 } 13 else if ( e == SYSTEM_KEYBOARD_KEYUP ) 14 {
15 EvtKeyUp* pKeyUp = (EvtKeyUp*)pEvent; 16 17 unsigned int key = pKeyUp->GetCharacterCode(); 18 19 if ( key == VK_ESCAPE ) // 'Esc' Key - Exit the application 20 {
21 this->RequestTermination(); 22 return( true ); 23 } 24 else if ( key == 0x53 ) // 'S' Key - Save a screen shot for the next frame 25 {
26 m_bSaveScreenshot = true; 27 return( true ); 28 } 29 else 30 {
31 return( false ); 32 } 33 } 34 35 // Call the parent class's event handler if we haven't handled the event. 36 37 return( Application::HandleEvent( pEvent ) ); 38 }

那么这个回调何时被响应呢?答案是这个由你来控制,一般情况下,在update里调用这个方法就行了:

EventManager::Get()->ProcessEvent();

转载于:https://www.cnblogs.com/Baesky/archive/2012/03/23/Glyph3_2.html

你可能感兴趣的文章
iOS开发UI篇—使用picker View控件完成一个简单的选餐应用
查看>>
Apple Developer Registration and DUNS Number Not Accepted
查看>>
Hadoop学习笔记系列文章导航
查看>>
SpringMVC中ModelAndView addObject()设置的值jsp取不到的问题
查看>>
Prometheus : 入门
查看>>
使用 PowerShell 创建和修改 ExpressRoute 线路
查看>>
PHP如何学习?
查看>>
在C#中获取如PHP函数time()一样的时间戳
查看>>
Redis List数据类型
查看>>
大数据项目实践(四)——之Hive配置
查看>>
初学vue2.0-组件-文档理解笔记v1.0
查看>>
NG-ZORRO-MOBILE 0.11.9 发布,基于 Angular 7 的 UI 组件
查看>>
我就是一个救火员(DBA救援)
查看>>
Centos7安装Gitlab10.0
查看>>
Windows Server 笔记(六):Active Directory域服务:域控制器安装
查看>>
discuz X3登录流程分析
查看>>
上传图片预览
查看>>
程序设计的一些原理
查看>>
lagp,lacp详解
查看>>
LVS之DR模式原理与实践
查看>>