登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

图像处理 视频分析 机器视觉 模式识别

方向比努力更重要

 
 
 

日志

 
 
关于我

河北软件开发项目,电子警察卡口项目,公安天网项目,媒体流处理,数字图像处理。媒体服务器 RTSP、图像处理、车牌识别……DCT变换,H.264压缩

系统键和非系统建消息  

2010-08-20 10:47:22|  分类: VS|Window |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

有两种键盘消息:
非系统键  WM_KEYDOWN           WM_KEYUP 
系统键     WM_SYSKEYDOWN     WM_SYSKEYUP

凡是ALT和其它键一同按下的组合称为“系统键”,窗口收到系统键之后,会自动地将它解释成系统事件,或者查阅键盘加速表,将系统键翻译成加速表指定的信息。如:ALT+F4的组合会迫使窗口关闭,“ALT+字母”的组合可能会拉下某个菜单。

非系统键就是不按下ALT键时的按键(比如单一按键)

 

虚拟值

VK_LBUTTON            01   鼠标左键

VK_RBUTTON            02   鼠标右键

VK_CANCEL             03   Control-break 过程

VK_MBUTTON           04   鼠标中键

VK_BACK                  08   BACKSPACE 键

VK_TAB                     09   TAB 键

VK_CLEAR                0C CLEAR 键

VK_RETURN               0D ENTER 键

VK_SHIFT                  10   SHIFT 键

VK_CONTROL            11    CTRL 键

VK_MENU                 12   ALT 键

VK_PAUSE                 13   PAUSE 键

VK_CAPITAL              14   CAPS LOCK 键

VK_ESCAPE              1B ESC 键

VK_SPACE                 20   SPACEBAR

VK_PRIOR                 21   PAGE UP 键

VK_NEXT                  22   PAGE DOWN 键

VK_END                            23   END 键

VK_HOME                 24   HOME 键

VK_LEFT                   25   LEFT ARROW 键

VK_UP                       26   UP ARROW 键

VK_RIGHT                 27   RIGHT ARROW 键

VK_DOWN                 28   DOWN ARROW 键

VK_SELECT               29   SELECT 键

VK_EXECUTE            2B EXECUTE 键

VK_SNAPSHOT          2C PRINT SCREEN键

VK_INSERT                2D INS 键

VK_DELETE              2E DEL 键

VK_HELP                   2F   HELP键

对于非小键盘上的数字键和字母键,直接在单引号中加入该键就行

比如: a 键: 'A'

1 键: '1'

VK_LWIN                   5B   Left Windows 键 (Microsoft自然键盘)

VK_RWIN                   5C Right Windows 键 (Microsoft自然键盘)

VK_APPS                   5D Applications 键 (Microsoft自然键盘)

VK_NUMPAD0           60   数字小键盘上的 0 键

VK_NUMPAD1           61    数字小键盘上的 1 键

VK_NUMPAD2           62   数字小键盘上的 2 键

VK_NUMPAD3           63   数字小键盘上的 3 键

VK_NUMPAD4           64   数字小键盘上的 4 键

VK_NUMPAD5           65   数字小键盘上的 5 键

VK_NUMPAD6           66   数字小键盘上的 6 键

VK_NUMPAD7           67   数字小键盘上的 7 键

VK_NUMPAD8           68   数字小键盘上的 8 键

VK_NUMPAD9           69   数字小键盘上的 9 键

VK_MULTIPLY           6A Multiply 键

VK_ADD                     6B Add键

VK_SEPARATOR        6C Separator 键

VK_SUBTRACT          6D Subtract 键

VK_DECIMAL            6E Decimal 键

VK_DIVIDE                      6F   Divide 键

VK_F1                        70   F1 键

VK_F2                        71   F2 键

VK_F3                        72   F3 键

VK_F4                        73   F4 键

VK_F5                        74   F5 键

VK_F6                        75   F6 键

VK_F7                        76   F7 键

VK_F8                         77   F8 键

VK_F9                        78   F9 键

VK_F10                      79   F10 键

VK_F11                             7A F11 键

VK_F12                      7B F12 键

VK_F13                      7C F13 键

VK_F14                      7D F14 键

VK_F15                      7E F15 键

VK_F16                      7F   F16 键

VK_F17                      80H F17 键

VK_F18                      81H F18 键

VK_F19                      82H F19 键

VK_F20                      83H F20 键

VK_F21                      84H F21 键

VK_F22                      85H F22 键

VK_F23                      86H F23 键

VK_F24                      87H F24 键

VK_NUMLOCK          90   NUM LOCK 键

VK_SCROLL               91   SCROLL LOCK 键

VK_ATTN                   F6   Attn 键

VK_CRSEL                 F7   CrSel 键

VK_EXSEL                 F8   ExSel 键

VK_EREOF                F9   Erase EOF 键

VK_PLAY                   FA Play 键

VK_ZOOM                  FB Zoom 键

VK_OEM_CLEAR       FE Clear 键

在单文档应用程序中的CXXXAPP类中添加虚函数PreTranslateMessage

BOOL CHBPlayerApp::PreTranslateMessage(MSG* pMsg)
{
 // TODO: Add your specialized code here and/or call the base class
 if (pMsg->message == WM_KEYDOWN)
 {
  switch (pMsg->wParam)
  {

  //屏蔽Esc消息
  case VK_ESCAPE:
   return true;
   break;

  //屏蔽回车键消息
  case VK_RETURN:
   return true;
   break;

  //组合键Ctrl+C
  case 'C':
   if(::GetKeyState(VK_CONTROL) < 0)
   {
   }
   break;

   //组合键Ctrl+Shift+S
  case 'S':
     if((::GetKeyState(VK_CONTROL) < 0) && (::GetKeyState(VK_SHIFT) < 0))
   {
   }
    return CWinApp::PreTranslateMessage(pMsg);
}

在对话框中添加键盘响应事件

1. ClassView中Add Windows Message Handle 添加WM-KEYDOWN和WM-KEYUP,Add Virtural Functions添加PreTranslateMessage

2.         BOOL **Dlg::PreTranslateMessage(MSG* pMsg)中添加

       if (pMsg-> message == WM_KEYDOWN)

              {

                     if(pMsg-> wParam== VK_RETURN)//直接用虚码代替就可以响应所指键

                     SetInfo(WDK_OK);      //回车对应ok

              }

       if (pMsg-> message == WM_KEYDOWN)

              {

                     if(pMsg-> wParam== VK_BACK)//直接用虚码代替就可以响应所指键

                     SetInfo(WDK_C);         //backspace对应删除

              }

       return CDialog::PreTranslateMessage(pMsg);

}

3. 组合键的用法:(本例响应Ctrl+X键)

BOOL CMydilog::PreTranslateMessage(MSG* pMsg)

{

if (pMsg-> message == WM_KEYDOWN)

{

switch (pMsg-> wParam)

{

case VK_ESCAPE:

SetFocus ();

return TRUE;

case 'X':

if(::GetKeyState(VK_CONTROL) < 0

MessageBox(" hello" );

return TRUE;

}

}

return CDialog::PreTranslateMessage(pMsg);

}


F10 and ALT arent picked up by WM_KEYDOWN, you need WM_SYSKEYDOWN.
You need to add: case WM_SYSKEYDOWN:
if(pMsg->wParam == VK_F10)
TRACE("F10\n");
break ;

  评论这张
 
阅读(7307)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018