wm_syscommand

WM_SYSCOMMAND   Notification
--------------------------------------------------------------------------------
A   window   receives   this   message   when   the   user   chooses   a   command   from   the   Window   menu   (formerly   known   as   the   system   or   control   menu)   or   when   the   user   chooses   the   maximize   button,   minimize   button,   restore   button,   or   close   button.
Syntax
WM_SYSCOMMAND
        WPARAM   wParam
        LPARAM   lParam;
Parameters
wParam
Specifies   the   type   of   system   command   requested.   This   parameter   can   be   one   of   the   following   values.  
SC_CLOSE
Closes   the   window.
SC_CONTEXTHELP
Changes   the   cursor   to   a   question   mark   with   a   pointer.   If   the   user   then   clicks   a   control   in   the   dialog   box,   the   control   receives   a   WM_HELP   message.
SC_DEFAULT
Selects   the   default   item;   the   user   double-clicked   the   window   menu.
SC_HOTKEY
Activates   the   window   associated   with   the   application-specified   hot   key.   The   lParam   parameter   identifies   the   window   to   activate.
SC_HSCROLL
Scrolls   horizontally.
SC_KEYMENU
Retrieves   the   window   menu   as   a   result   of   a   keystroke.   For   more   information,   see   the   Remarks   section.
SC_MAXIMIZE
Maximizes   the   window.
SC_MINIMIZE
Minimizes   the   window.
SC_MONITORPOWER
Sets   the   state   of   the   display.   This   command   supports   devices   that   have   power-saving   features,   such   as   a   battery-powered   personal   computer.  
The   lParam   parameter   can   have   the   following   values:
1   -   the   display   is   going   to   low   power
2   -   the   display   is   being   shut   off
SC_MOUSEMENU
Retrieves   the   window   menu   as   a   result   of   a   mouse   click.
SC_MOVE
Moves   the   window.
SC_NEXTWINDOW
Moves   to   the   next   window.
SC_PREVWINDOW
Moves   to   the   previous   window.
SC_RESTORE
Restores   the   window   to   its   normal   position   and   size.
SC_SCREENSAVE
Executes   the   screen   saver   application   specified   in   the   [boot]   section   of   the   System.ini   file.
SC_SIZE
Sizes   the   window.
SC_TASKLIST
Activates   the   Start   menu.
SC_VSCROLL
Scrolls   vertically.
lParam
The   low-order   word   specifies   the   horizontal   position   of   the   cursor,   in   screen   coordinates,   if   a   window   menu   command   is   chosen   with   the   mouse.   Otherwise,   this   parameter   is   not   used.  
The   high-order   word   specifies   the   vertical   position   of   the   cursor,   in   screen   coordinates,   if   a   window   menu   command   is   chosen   with   the   mouse.   This   parameter   is   –1   if   the   command   is   chosen   using   a   system   accelerator,   or   zero   if   using   a   mnemonic.  
Return   Value
An   application   should   return   zero   if   it   processes   this   message.
Remarks
To   obtain   the   position   coordinates   in   screen   coordinates,   use   the   following   code:  
xPos   =   GET_X_LPARAM(lParam);         //   horizontal   position  
yPos   =   GET_Y_LPARAM(lParam);         //   vertical   position
The   DefWindowProc   function   carries   out   the   window   menu   request   for   the   predefined   actions   specified   in   the   previous   table.  
In   WM_SYSCOMMAND   messages,   the   four   low-order   bits   of   the   wParam   parameter   are   used   internally   by   the   system.   To   obtain   the   correct   result   when   testing   the   value   of   wParam,   an   application   must   combine   the   value   0xFFF0   with   the   wParam   value   by   using   the   bitwise   AND   operator.  
The   menu   items   in   a   window   menu   can   be   modified   by   using   the   GetSystemMenu,   AppendMenu,   InsertMenu,   ModifyMenu,   InsertMenuItem,   and   SetMenuItemInfo   functions.   Applications   that   modify   the   window   menu   must   process   WM_SYSCOMMAND   messages.
An   application   can   carry   out   any   system   command   at   any   time   by   passing   a   WM_SYSCOMMAND   message   to   DefWindowProc.   Any   WM_SYSCOMMAND   messages   not   handled   by   the   application   must   be   passed   to   DefWindowProc.   Any   command   values   added   by   an   application   must   be   processed   by   the   application   and   cannot   be   passed   to   DefWindowProc.  
Accelerator   keys   that   are   defined   to   choose   items   from   the   window   menu   are   translated   into   WM_SYSCOMMAND   messages;   all   other   accelerator   keystrokes   are   translated   into   WM_COMMAND   messages.  
If   the   wParam   is   SC_KEYMENU,   lParam   contains   the   character   code   of   the   key   that   is   used   with   the   ALT   key   to   display   the   popup   menu.   For   example,   pressing   ALT+F   to   display   the   File   popup   will   cause   a   WM_SYSCOMMAND   with   wParam   equal   to   SC_KEYMENU   and   lParam   equal   to   'f '.

原文地址:https://www.cnblogs.com/Mingxx/p/2079266.html