RT
用下面的函数来捕捉,怎么做?
void CTreeCtrlEx::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
}

解决方案 »

  1.   

    这样不行。
    void CTreeCtrlEx::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
      if(nFlags & MK_SHIT & MK_DELETE)
         {func();}
     }
      

  2.   

    BOOL CMyCtrl::PreTranslateMessage(MSG* pMsg)
    {
       if (pMsg->message == WM_KEYDOWN)
       {
          switch (pMsg->wParam)
          {
            //  如果是 ALT 键
            case VK_ALT:
            { 
             // 用 GetKeyState 来查看按键是否按下,如果按下,返回值小于0 Alt + Ctrl + Del
               if((GetKeyState(VK_CONTROL)<0)&&((GetKeyState(VK_SHIFT)<0))
                  GetParent()->PostMessage(WM_COMMAND, ID_MY_MSG_PROCESS, 0);
                  // 发送消息通知处理
    }            
            break;        case VK_CTROL:
            { 
             // 用 GetKeyState 来查看按键是否按下,如果按下,返回值小于0 Alt + Ctrl + Del
               if((GetKeyState(VK_ALT)<0)&&((GetKeyState(VK_SHIFT)<0))
                  GetParent()->PostMessage(WM_COMMAND, ID_MY_MSG_PROCESS, 0);
                  // 发送消息通知处理
    }            
            break;        case VK_SHIT:
            { 
             // 用 GetKeyState 来查看按键是否按下,如果按下,返回值小于0 Alt + Ctrl + Del
               if((GetKeyState(VK_ALT)<0)&&((GetKeyState(VK_CONTROL)<0))
                  GetParent()->PostMessage(WM_COMMAND, ID_MY_MSG_PROCESS, 0);
                  // 发送消息通知处理
    }            
            break;
            
            //... 后面的消息列举不列举了
            default:
         }
       return CMyCtrl::PreTranslateMessage(pMsg);
    }