AMIO编辑器开发(八):键盘的上下键交互
总体的流程如AMIO编辑器开发(五):C++语言设计模式实现前的吐嘈中所示。
window消息循环把WM_KEYDOWN消息调用封装的window方法:
case WM_KEYDOWN: windowKeyDown(hwnd, wParam); return 0;
bool windowKeyDown(HWND hwnd, DWORD keyCode){ globalKeyboard.onPressKey(keyCode); return true; }
void Keyboard::onPressKey(DWORD keyCode){ switch (keyCode){ case VK_UP: globalAimoCenter.screen.scrollUpOneLine(); break; case VK_DOWN: globalAimoCenter.screen.scrollDownOneLine(); break; case VK_LEFT: break; case VK_RIGHT: break; default: break; } }
然后就是更新Adapter,通知UI刷新界面即可。
现在的缺点:
界面是单线程、无缓冲页面,所以在快速按上下键时,可能会出现闪屏的不良效果。
改进方法,使用双缓冲页面,或 把WM_PAINT中处理的方法再优化到30帧以上。
以后可能要使用DX或OpenGL等专业的渲染API来代替window的GUI的API。
下一步是完成左右的列移动,以及光标显示和光标的边界判断。