请问一下会是什么原因。

解决方案 »

  1.   

    如果你在视图类中响应了OnKeyDown,但如果当前焦点不在视图的话,消息是不会响应的。应先用鼠标点一下视图的任一个地方。
      

  2.   

    你的OnKeyDown是针对谁的?当前的焦点没在它上面吧。比如Edit中你加了OnKeyDown,但当前焦点在对话框上,然后你按任意健,当然就不会响应。
      

  3.   

    我的视图类是基于formview的,上面还另建了一个子窗口动态显示一些东西,现在在视图类和子窗口类里增加OnKeyDown函数都不响应,OnLeftButtonDown倒是响应
      

  4.   

    BOOL CKeyDowDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    switch (pMsg->message)
    {
    case WM_KEYDOWN:
    switch (pMsg->wParam)
    {
    case VK_RIGHT :
    AfxMessageBox( "right" ) ;
    break ;
    case VK_RETURN:
    AfxMessageBox( "enter" ) ;
    break ;
    case VK_LEFT:
    AfxMessageBox( "left" ) ;
    break ;
    case VK_DOWN:
    AfxMessageBox( "down" ) ;
    break ;
    case VK_UP:
    AfxMessageBox( "up" ) ;
    break; 
    case VK_BACK:
    AfxMessageBox( "backspace" ) ;
    break ;
    case VK_HOME:
    AfxMessageBox( "home" ) ;
    break ;
    case VK_END:
    AfxMessageBox( "end" ) ;
    break ;
    case VK_INSERT:
    AfxMessageBox( "insert" ) ;
    break ;
    case VK_DELETE:
    AfxMessageBox( "delete" ) ;
    break ;
    case VK_SCROLL:
    AfxMessageBox( "scrool" ) ;
    break; 
    case VK_PRINT:
    AfxMessageBox( "printf screen" ) ;
    break; 
    case VK_PAUSE:
    AfxMessageBox( "pause" ) ;
    break; 
    case VK_F1:
    AfxMessageBox( "f1" ) ;
    break;
    }
    case WM_KEYUP:
    break;
    case WM_CHAR:
    switch( pMsg->wParam )
    {
    case 65:
    AfxMessageBox( "A" ) ;
    break; 
    }
    default:
    break;
    }

    return CDialog::PreTranslateMessage(pMsg);
    }
      

  5.   

    OnKeyDown函数是手动添加不还是用向导,如果是手动的,
    别望了加消息映射宏ON_WM_KEYDOWN()