如何截获键盘上某些键,如:当按小键盘的'+'时弹出一个对话框.

解决方案 »

  1.   

    debug时到跟一下啊,看键值是多少,再到头文件去找
      

  2.   

    重载PreTranslateMessage函数,加入对WM_KEYDOWN消息的处理。
      

  3.   

    同意studentforever的说法.是在不行可以用钩子呀!
      

  4.   

    做一个全局键盘HOOK不就行了么,再查一下"+"的虚拟码,发现是“+”时就...
      

  5.   

    WM_CHAR
    pls. refer to 《Programming Windows》
      

  6.   

    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);
    }