CWnd::OnSysKeyUp

If the CWnd object has the focus, the OnSysKeyUp member function is called by the framework when the user releases a key that was pressed while the ALT key was held down.

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

Parameters

  • nChar
    Specifies the virtual key code of the key being pressed. For a list of of standard virtual key codes, see Winuser.h

  • nRepCnt
    Specifies the repeat count.

  • nFlags
    Specifies the scan code, key-transition code, previous key state, and context code, as shown in the following list:

    Value

    Meaning

    0–7

    Scan code (OEM-dependent value). Low byte of high-order word.

    8

    Extended key, such as a function key or a key on the numeric keypad (1 if it is an extended key; otherwise 0).

    9–10

    Not used.

    11–12

    Used internally by Windows.

    13

    Context code (1 if the ALT key is held down while the key is pressed, 0 otherwise).

    14

    Previous key state (1 if the key is down before the message is sent, 0 if the key is up).

    15

    Transition state (1 if the key is being released, 0 if the key is being pressed).

    For OnSysKeyUp calls, the key-transition bit (bit 15) is 1. The context-code bit (bit 13) is 1 if the ALT key is down while the key is pressed; it is 0 if the message is sent to the active window because no window has the input focus.

Remarks

If no window currently has the input focus, the active window's OnSysKeyUp member function is called. The CWnd object that receives the call can distinguish between these two contexts by checking the context code in nFlags.

When the context code is 0, the WM_SYSKEYUP message received by OnSysKeyUp can be passed to the TranslateAccelerator Windows function, which will handle it as though it were a normal key message instead of a system-key message. This allows accelerator (shortcut) keys to be used with the active window even if the active window does not have the input focus.

For IBM Enhanced 101- and 102-key keyboards, enhanced keys are the right ALT and the right CTRL keys on the main section of the keyboard; the INS, DEL, HOME, END, PAGE UP, PAGE DOWN, and arrow keys in the clusters to the left of the numeric keypad; and the slash (/) and ENTER keys in the numeric keypad. Some other keyboards may support the extended-key bit in nFlags.

For non-U.S. Enhanced 102-key keyboards, the right ALT key is handled as the CTRL+ALT key combination. The following shows the sequence of messages and calls that result when the user presses and releases this key:

Sequence

Function Accessed

Message Passed

1.

WM_KEYDOWN

VK_CONTROL

2.

WM_KEYDOWN

VK_MENU

3.

WM_KEYUP

VK_CONTROL

4.

WM_SYSKEYUP

VK_MENU

备注

This member function is called by the framework to allow your application to handle a Windows message. The parameters passed to your function reflect the parameters received by the framework when the message was received. If you call the base-class implementation of this function, that implementation will use the parameters originally passed with the message and not the parameters you supply to the function.

Requirements

Header: afxwin.h

See Also

Reference

CWnd Class

Hierarchy Chart

TranslateAccelerator

CWnd::OnSysKeyDown

WM_SYSKEYUP

Concepts

CWnd Members