CWnd::OnSysKeyUp

afx_msg void OnSysKeyUp( UINT nChar, UINT nRepCnt, UINT nFlags );

参数:
nChar指定了被释放的键的虚拟键码。
nRepCnt指定了重复计数。
nFlags指定了扫描码、键暂态码、以前的键状态和上下文代码,如下面的列表所示:
含义
0-7扫描码(依赖于OEM)。高位字的低位字节
8扩展键,如功能键或数字键盘上的键(如果该键为扩展键,则返回1;否则返回0)
9-10没有使用
11-12Windows内部使用
13上下文代码(如果键被按下时ALT键是被按住的,则为1;否则为0)
14以前的键状态(如果键在调用前被按下,则为1;否则为0)
15暂态(如果键正被放开,则为1;如果键正被按下,则为0)
对于OnSysKeyUp调用,键暂态位(15位)为0。如果按下键时ALT键被按下,则上下文代码位(13位)为1;如果因为没有窗口拥有输入焦点消息被发送到活动窗口时,它为0。

说明:
如果CWnd对象具有输入焦点,则当用户放开一个在按住ALT键时按下的键时,框架就调用OnSysKeyUp成员函数。如果没有窗口具有当前的输入焦点,活动窗口的OnSysKeyUp成员函数将会被调用。接收调用的CWnd对象可以通过检查nFlags中的上下文代码位来区别这两种环境。
当上下文代码为0时,OnSysKeyUp接收到的WM_SYSKEYUP消息可以被传递给Windows的函数TranslateAccelerator,它将处理这个消息,就像这是一种普通的键盘消息,而不是系统键消息。
对于IBM增强101和102键键盘,增强键包括键盘主体部分的右ALT键和右CTRL键;数字键盘左侧的INS,DEL,HOME,END,PAGE UP,PAGE DOWN和箭头键;以及数字键盘上的斜杠(/)和ENTER键。一些其它的键盘可能支持nFlags中的扩展键位。
对于非美国增强型102键键盘,右边的ALT键被当作CTRL+ALT键组合处理。下面显示用户按下并释放这个键时生成的消息和调用的顺序:
顺序访问的函数传递的消息
1.WM_KEYDOWNVK_CONTROL
2.WM_KEYDOWNVK_MENU
3.WM_KEYUPVK_CONTROL
4.WM_SYSKEYUPVK_MENU
注意 框架调用这个成员函数以允许你的应用程序处理一个Windows消息。传递给你的成员函数的参数反映了接收到消息时框架接收到的参数。如果你调用了这个函数的基类实现,则该实现将使用最初传递给消息的参数(而不是你提供给这个函数的参数)。

请参阅:::TranslateAccelerator, WM_SYSKEYDOWN, WM_SYSKEYUP