有关键盘热键的一个问题 我不使用HOTKEY这个控件,请问如何在某个编辑框中显示出我按下了“ALT”键,或者是“ctrl”,“SHIFT”,“ALT”三个辅助按键中的任意组合键值? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以下是我的程序,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) ;}请高手教我! 有没有人知道呀!!awnucel(中国间谍) ,你在哪里呀!!!!!! http://www.vckbase.com/code/findcode.asp那有代码,看看吧 怎么找呀,这么多,唉,人还是要靠自己,我已经想出解决办法了,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 如何获取自定义控件的ID号 一个即将毕业的本科生,请前辈们进来指点下。 能否帮忙检查一下这个类会不会内存泄漏? 请教VC高手,如何在一个对话框程序中捕获鼠标消息??? 有RegEnumKeyEx关的问题 菜鸟入门问题,跪求高手帮助 UDP如何实现多线程通信,急等 再散200分,今天我的马甲Cicero散300,ActiveSync散300,这个帐号散400 关于视频捕获问题! 我算看清楚了 求救:ACDSEE中的图象放大是怎么做出来的? 简单问题
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) ;
}
请高手教我!
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