WM_APPCOMMAND message

Notifies a window that the user generated an application command event, for example, by clicking an application command button using the mouse or typing an application command key on the keyboard.

#define WM_APPCOMMAND                   0x0319

Parameters

wParam

A handle to the window where the user clicked the button or pressed the key. This can be a child window of the window receiving the message. For more information about processing this message, see the Remarks section.

lParam

Use the following code to get the information contained in the lParam parameter.

cmd  = GET_APPCOMMAND_LPARAM(lParam);

uDevice = GET_DEVICE_LPARAM(lParam);

dwKeys = GET_KEYSTATE_LPARAM(lParam);

The application command is cmd, which can be one of the following values.

Value Meaning
APPCOMMAND_BASS_BOOST
20
Toggle the bass boost on and off.
APPCOMMAND_BASS_DOWN
19
Decrease the bass.
APPCOMMAND_BASS_UP
21
Increase the bass.
APPCOMMAND_BROWSER_BACKWARD
1
Navigate backward.
APPCOMMAND_BROWSER_FAVORITES
6
Open favorites.
APPCOMMAND_BROWSER_FORWARD
2
Navigate forward.
APPCOMMAND_BROWSER_HOME
7
Navigate home.
APPCOMMAND_BROWSER_REFRESH
3
Refresh page.
APPCOMMAND_BROWSER_SEARCH
5
Open search.
APPCOMMAND_BROWSER_STOP
4
Stop download.
APPCOMMAND_CLOSE
31
Close the window (not the application).
APPCOMMAND_COPY
36
Copy the selection.
APPCOMMAND_CORRECTION_LIST
45
Brings up the correction list when a word is incorrectly identified during speech input.
APPCOMMAND_CUT
37
Cut the selection.
APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE
43
Toggles between two modes of speech input: dictation and command/control (giving commands to an application or accessing menus).
APPCOMMAND_FIND
28
Open the Find dialog.
APPCOMMAND_FORWARD_MAIL
40
Forward a mail message.
APPCOMMAND_HELP
27
Open the Help dialog.
APPCOMMAND_LAUNCH_APP1
17
Start App1.
APPCOMMAND_LAUNCH_APP2
18
Start App2.
APPCOMMAND_LAUNCH_MAIL
15
Open mail.
APPCOMMAND_LAUNCH_MEDIA_SELECT
16
Go to Media Select mode.
APPCOMMAND_MEDIA_CHANNEL_DOWN
52
Decrement the channel value, for example, for a TV or radio tuner.
APPCOMMAND_MEDIA_CHANNEL_UP
51
Increment the channel value, for example, for a TV or radio tuner.
APPCOMMAND_MEDIA_FAST_FORWARD
49
Increase the speed of stream playback. This can be implemented in many ways, for example, using a fixed speed or toggling through a series of increasing speeds.
APPCOMMAND_MEDIA_NEXTTRACK
11
Go to next track.
APPCOMMAND_MEDIA_PAUSE
47
Pause. If already paused, take no further action. This is a direct PAUSE command that has no state. If there are discrete Play and Pause buttons, applications should take action on this command as well as APPCOMMAND_MEDIA_PLAY_PAUSE.
APPCOMMAND_MEDIA_PLAY
46
Begin playing at the current position. If already paused, it will resume. This is a direct PLAY command that has no state. If there are discrete Play and Pause buttons, applications should take action on this command as well as APPCOMMAND_MEDIA_PLAY_PAUSE.
APPCOMMAND_MEDIA_PLAY_PAUSE
14
Play or pause playback. If there are discrete Play and Pause buttons, applications should take action on this command as well as APPCOMMAND_MEDIA_PLAY and APPCOMMAND_MEDIA_PAUSE.
APPCOMMAND_MEDIA_PREVIOUSTRACK
12
Go to previous track.
APPCOMMAND_MEDIA_RECORD
48
Begin recording the current stream.
APPCOMMAND_MEDIA_REWIND
50
Go backward in a stream at a higher rate of speed. This can be implemented in many ways, for example, using a fixed speed or toggling through a series of increasing speeds.
APPCOMMAND_MEDIA_STOP
13
Stop playback.
APPCOMMAND_MIC_ON_OFF_TOGGLE
44
Toggle the microphone.
APPCOMMAND_MICROPHONE_VOLUME_DOWN
25
Increase microphone volume.
APPCOMMAND_MICROPHONE_VOLUME_MUTE
24
Mute the microphone.
APPCOMMAND_MICROPHONE_VOLUME_UP
26
Decrease microphone volume.
APPCOMMAND_NEW
29
Create a new window.
APPCOMMAND_OPEN
30
Open a window.
APPCOMMAND_PASTE
38
Paste
APPCOMMAND_PRINT
33
Print current document.
APPCOMMAND_REDO
35
Redo last action.
APPCOMMAND_REPLY_TO_MAIL
39
Reply to a mail message.
APPCOMMAND_SAVE
32
Save current document.
APPCOMMAND_SEND_MAIL
41
Send a mail message.
APPCOMMAND_SPELL_CHECK
42
Initiate a spell check.
APPCOMMAND_TREBLE_DOWN
22
Decrease the treble.
APPCOMMAND_TREBLE_UP
23
Increase the treble.
APPCOMMAND_UNDO
34
Undo last action.
APPCOMMAND_VOLUME_DOWN
9
Lower the volume.
APPCOMMAND_VOLUME_MUTE
8
Mute the volume.
APPCOMMAND_VOLUME_UP
10
Raise the volume.

The uDevice component indicates the input device that generated the input event, and can be one of the following values.

Value Meaning
FAPPCOMMAND_KEY
0
User pressed a key.
FAPPCOMMAND_MOUSE
0x8000
User clicked a mouse button.
FAPPCOMMAND_OEM
0x1000
An unidentified hardware source generated the event. It could be a mouse or a keyboard event.

The dwKeys component indicates whether various virtual keys are down, and can be one or more of the following values.

Value Meaning
MK_CONTROL
0x0008
The CTRL key is down.
MK_LBUTTON
0x0001
The left mouse button is down.
MK_MBUTTON
0x0010
The middle mouse button is down.
MK_RBUTTON
0x0002
The right mouse button is down.
MK_SHIFT
0x0004
The SHIFT key is down.
MK_XBUTTON1
0x0020
The first X button is down.
MK_XBUTTON2
0x0040
The second X button is down.

Return value

If an application processes this message, it should return TRUE. For more information about processing the return value, see the Remarks section.

Remarks

DefWindowProc generates the WM_APPCOMMAND message when it processes the WM_XBUTTONUP or WM_NCXBUTTONUP message, or when the user types an application command key.

If a child window does not process this message and instead calls DefWindowProc, DefWindowProc will send the message to its parent window. If a top level window does not process this message and instead calls DefWindowProc, DefWindowProc will call a shell hook with the hook code equal to HSHELL_APPCOMMAND.

To get the coordinates of the cursor if the message was generated by a mouse click, the application can call GetMessagePos. An application can test whether the message was generated by the mouse by checking whether lParam contains FAPPCOMMAND_MOUSE.

Unlike other windows messages, an application should return TRUE from this message if it processes it. Doing so will allow software that simulates this message on Windows systems earlier than Windows 2000 to determine whether the window procedure processed the message or called DefWindowProc to process it.

Requirements

Minimum supported client
Windows 2000 Professional [desktop apps only]
Minimum supported server
Windows 2000 Server [desktop apps only]
Header
Winuser.h (include Windows.h)

See also

Reference

DefWindowProc

GET_APPCOMMAND_LPARAM

GET_DEVICE_LPARAM

GET_KEYSTATE_LPARAM

ShellProc

WM_XBUTTONUP

WM_NCXBUTTONUP

Conceptual

Mouse Input