总体的流程如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。
下一步是完成左右的列移动,以及光标显示和光标的边界判断。