我不使用HOTKEY这个控件,请问如何在某个编辑框中显示出我按下了“ALT”键,或者是“ctrl”,“SHIFT”,“ALT”三个辅助按键中的任意组合键值?

解决方案 »

  1.   

    以下是我的程序,m_sAlt,m_sCommon,m_sControl,m_sSpecial,m_strHotkey都是我定义的CString类型。
    void CHotKeyEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    // CEdit::OnKeyDown(nChar, nRepCnt, nFlags);
    m_strHotKey.Empty() ;
    if(nFlags == 13) m_sAlt = "Alt + " ;//为什么ALT的效果出不来???
    // MessageBox(m_sAlt);
    if(nChar >= VK_F1 && nChar <= VK_F12)  {
        m_sSpecial.Format("F%d",nChar-VK_F1+1) ;
    }
    else if( (nChar >='A' && nChar <='Z') || 
         (nChar >='a' && nChar <='z') ||
         (nChar >='0' && nChar <='9'))     
                    m_sCommon.Format("%c",nChar) ;
        if(m_sControl.IsEmpty() == TRUE) {
            switch(nChar) 
    {
              case VK_CONTROL: m_sControl = "Ctrl + " ; break ;
              case VK_SHIFT : m_sControl = "Shift + " ; break ;
             case VK_MENU: m_sAlt = "Alt + " ; break;//这里ALT效果也出不来
              case VK_HOME : m_sControl = "Home + " ; break ;        default: break ;
    }
    }
        
    }void CHotKeyEdit::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
     //  CEdit::OnKeyUp(nChar, nRepCnt, nFlags);
    m_strHotKey = m_sControl + m_sAlt + m_sSpecial + m_sCommon ;
    m_sControl.Empty() ;
    m_sSpecial.Empty() ;
    m_sCommon.Empty() ;
    if(nChar != VK_CONTROL && nChar != VK_SHIFT) 
                     SetWindowText(m_strHotKey) ;
    }
    请高手教我!
      

  2.   

    有没有人知道呀!!awnucel(中国间谍) ,你在哪里呀!!!!!!
      

  3.   

    http://www.vckbase.com/code/findcode.asp那有代码,看看吧
      

  4.   

    怎么找呀,这么多,唉,人还是要靠自己,我已经想出解决办法了,
    void CHotKeyEdit::OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    // TODO: Add your message handler code here and/or call default

    CEdit::OnSysKeyDown(nChar, nRepCnt, nFlags);
    }
    按ALT键会触发这个函数:P