我的程序如下,为什么按下键盘的上下左右键没反应呢,但是按下字母健如w等就有反应。希望名位大虾指导一下~~void CMyOpenGLView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值 //------------------------------------------------------
//键盘按键响应 //按下SHIFT键时加速
if(nChar == VK_SHIFT)
{
m_Camera.setSpeed(0.6);
}
//没有按下SHIFT键时不加速
if(nChar != VK_SHIFT)
{
m_Camera.setSpeed(0.2);
}
//向上方向键或者‘W’键按下,则向上走
if(nChar == VK_UP || nChar == 'w' || nChar == 'W')
{
m_Camera.moveCamera(m_Camera.getSpeed());
}
//向下方向键或者‘s’键按下,则向下走
if(nChar == VK_DOWN || nChar == 's' || nChar == 'S')
{
m_Camera.moveCamera(-m_Camera.getSpeed());
}
//向左方向键或者‘a’键按下,则向左走
if(nChar == VK_LEFT || nChar == 'a' || nChar == 'A')
{
m_Camera.yawCamera(-m_Camera.getSpeed());
}
//向右方向键或者‘d’键按下,则向右走
if(nChar == VK_RIGHT || nChar == 'd' || nChar == 'D')
{
m_Camera.yawCamera(m_Camera.getSpeed());
} CView::OnChar(nChar, nRepCnt, nFlags);
}把上面的IF语句换成下面这样也是同样的问题:
switch(nChar)
{
case VK_UP:
case 'w':
case 'W':
m_Camera.moveCamera(m_Camera.getSpeed());
break;
case VK_DOWN:
case 's':
case 'S':
m_Camera.moveCamera(-m_Camera.getSpeed());
break;
case VK_LEFT:
case 'a':
case 'A':
m_Camera.yawCamera(-m_Camera.getSpeed());
break;
case VK_RIGHT:
case 'd':
case 'D':
m_Camera.yawCamera(m_Camera.getSpeed());
break;
}