在PreTranslateMessage中如何不拦截ALT+字母的组合键??我只想拦截ESC键,其他按照原来的流程走。请问如何实现,最好有例子给出来,谢谢!

解决方案 »

  1.   

    只处理ESC就行了,其余的都放行
      

  2.   

    我是这样写的
    if (pMsg->wParam==VK_ESCAPE) {//shield the ESC key message
        return true;
    }
    else
        return false;
    不过运行时,按ALT+字母键程序不响应。
      

  3.   

    是不是alt键要单独拦截一下呢 没用PreTranslateMessage做过 一般都用hook
      

  4.   

    而且你也要判断pMsg->message == WM_KEYDOWN
      

  5.   

    试过了,即使判断KEYDOWN也会把ALT+字母键的消息过滤。
      

  6.   

    BOOL   CDomainAnalysisToolDlg::PreTranslateMessage(MSG*   pMsg)     
    {   
    //屏蔽回车事件
    if(   pMsg-> message   ==WM_KEYDOWN   &&   pMsg-> wParam==VK_ESCAPE) 

    return   true; 
    }
    return   CDialog::PreTranslateMessage(pMsg);   
    }  
      

  7.   

    上面注释错了,我原来的程序时屏蔽掉回车事件的。我把VK_RETURN已经改了,但是注释忘改了,汗。
      

  8.   

    感觉不是这里被filter掉的,对话框本身似乎对alt+键盘的支持似乎就不好
    你在SDI试试?
      

  9.   

    if( pMsg->wParam==VK_NUMLOCK||pMsg->wParam==VK_CAPITAL||pMsg->wParam==VK_SCROLL||
    pMsg->wParam==VK_ESCAPE||pMsg->wParam==VK_RETURN||pMsg->wParam==VK_TAB||
    (pMsg->wParam>=VK_F1&&pMsg->wParam<=VK_F12))
    { return FALSE;
    }
    // 其他按键处理
    else if(!IsSafeMode())
    { ... }
    return TRUE;
      

  10.   

    alt+*组合键是要处理pmsg-》lparam的。
    其实你不妨这样做:
    if ( pMsg->message == WM_KEYDOWN)
    if (pMsg->wParam==VK_ESCAPE) {
     short   state   =   GetKeyState(VK_SHIFT);   
    if(state&0x8000)
    }   
      

  11.   

    TO yschenwei
       其实我是想放行ALT+字母键的组合键盘消息。
      

  12.   

    TO j_act
      看不懂你这样写的理由。