查看: 1105|回复: 1

请教关于键盘的问题

[复制链接]

该用户从未签到

发表于 2009-11-19 15:04:15 | 显示全部楼层 |阅读模式
bool KeyboardEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter&)
{
        int keyNum;
        CString   s   ;   
        switch (ea.getEventType())
        {
        case(osgGA::GUIEventAdapter::KEYDOWN):
                keyNum = ea.getKey();
                switch(keyNum)
                {
                case 'm':                                                                        keyNum = 'w';break;
                case osgGA::GUIEventAdapter::KEY_Up:                keyNum = 'w';break;
                case osgGA::GUIEventAdapter::KEY_Down:                keyNum = 's';break;
                case osgGA::GUIEventAdapter::KEY_Left:                keyNum = 'a';break;
                case osgGA::GUIEventAdapter::KEY_Right:                keyNum = 'd';break;
                }
                s.Format("%d",keyNum  );   

                AfxMessageBox("keyNum is "+s);
                if(keyNum>=0&&keyNum<256)keyDown[keyNum] = true;
                break;

        case(osgGA::GUIEventAdapter::KEYUP):
                keyNum = ea.getKey();
                if(keyNum>=0&&keyNum<256)keyDown[keyNum] = false;
                break;
        default:
                break;

        }
        //return false to allow mouse manipulation
        return false;
}

运行后,当按下上下左右这四个键的时候没有任何反应,按下其他键的时候就会弹出message对话框,输出keyNum,但是如果把messageBox添加到KEYUP下,就可以弹出对话框,请问是什么原因啊?我的程序什么地方有问题呢?

该用户从未签到

发表于 2009-11-19 21:42:45 | 显示全部楼层
我暂时也不太清楚,您可以脱离MFC环境再试一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表