2进制按键处理
来源:互联网 发布:p2p网络摄像机说明书 编辑:程序博客网 时间:2024/06/07 02:21
#define GK_NULL 0#define GK_W (1<<0)#define GK_S (1<<1)#define GK_A (1<<2)#define GK_D (1<<3)#define GK_J (1<<4)#define GK_K (1<<5)int g_iKeyState = GK_NULL;void(*pListeners[10])(char keycode);short VK2GK(char keyCode){ switch (keyCode) { case 'W': case 'w': return GK_W; case 'D': case 'd': return GK_D; case 'A': case 'a': return GK_A; case 'S': case 's': return GK_S; case 'J': case 'j': return GK_J; case 'K': case 'k': return GK_K; default: return GK_NULL; }}bool IsKeyDown(int gk){ return g_iKeyState & gk;}void OnKeyDown(char keycode){ cout << keycode << "按下" << endl; g_iKeyState |= VK2GK(keycode);}void OnKeyUp(char keycode){ cout << keycode << "抬起" << endl; g_iKeyState &= ~VK2GK(keycode);}int RegistKeyFun(void(*pListeners[10])(char keycode),void(*pF)(char keycode)){ static int iD = 0; pListeners[iD++] = pF; return iD - 1;}void NotifyKey(void(*pListeners[10])(char keycode), int funID, int keycode){ pListeners[funID](keycode);}void main(){ int keyDown = RegistKeyFun(pListeners, OnKeyDown); int keyUp = RegistKeyFun(pListeners, OnKeyUp); NotifyKey(pListeners, keyDown, 'a'); NotifyKey(pListeners, keyDown, 'J'); if (IsKeyDown(GK_A) && IsKeyDown(GK_J)) { cout << "a和j被同时按下" << endl; } NotifyKey(pListeners, keyUp, 'A'); if (!IsKeyDown(GK_A)) { cout << "a抬起" << endl; }}
阅读全文
0 0
- 2进制按键处理
- 按键处理
- 按键处理
- 按键处理
- 按键处理
- symbian 按键事件的处理2
- CEdit按键处理
- symbian 按键处理
- 按键事件的处理
- 液晶屏按键处理
- s60按键处理模型
- 按键扫描处理
- MTK 按键处理流程
- 按键事件的处理
- 按键处理:OfferKeyEventL
- android中的按键处理
- js按键处理demo
- Android 按键处理
- springMVC简易框架的搭建与改进
- Java编写WEB后台接口,跨域问题的两种解决办法。
- Nginx学习--之基于Nginx的中间件架构
- nio buffer 工作方式
- Hdoj 2000 ASCII码排序
- 2进制按键处理
- React.js 集成 Kotlin Spring Boot 开发 Web 应用实例详解
- GitGUI出现 Unable to obtain your identity
- JavaWeb之过滤器实现自动登录案例
- Hdoj 2001 计算两点间的距离
- Hdoj 2002 计算球体积
- CycleGAN-Unpaired图像翻译
- Life_1
- KMeans+DBSCAN小试