WM_SYSCOMMAND包括很多功能,比如:拖动左边框、拖动标题栏、滚动条滚动、点击最小化、双击标题栏——Delphi 通过事件代替了大部分常用的消息,所以Delphi 简单、易用、高效

procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
var
  str: string;
begin
  case Message.CmdType of
    SC_SIZE         : str := 'SIZE         ';
    SC_MOVE         : str := 'MOVE         ';
    SC_MINIMIZE     : str := 'MINIMIZE     ';
    SC_MAXIMIZE     : str := 'MAXIMIZE     ';
    SC_NEXTWINDOW   : str := 'NEXTWINDOW   ';
    SC_PREVWINDOW   : str := 'PREVWINDOW   ';
    SC_CLOSE        : str := 'CLOSE        ';
    SC_VSCROLL      : str := 'VSCROLL      ';
    SC_HSCROLL      : str := 'HSCROLL      ';
    SC_MOUSEMENU    : str := 'MOUSEMENU    ';
    SC_KEYMENU      : str := 'KEYMENU      ';
    SC_ARRANGE      : str := 'ARRANGE      ';
    SC_RESTORE      : str := 'RESTORE      ';
    SC_TASKLIST     : str := 'TASKLIST     ';
    SC_SCREENSAVE   : str := 'SCREENSAVE   ';
    SC_HOTKEY       : str := 'HOTKEY       ';
    SC_DEFAULT      : str := 'DEFAULT      ';
    SC_MONITORPOWER : str := 'MONITORPOWER ';
    SC_CONTEXTHELP  : str := 'CONTEXTHELP  ';
    SC_SEPARATOR    : str := 'SEPARATOR    ';

    61441: str := '拖动左边框    ';
    61442: str := '拖动右边框    ';
    61443: str := '拖动上边框    ';
    61444: str := '拖动左上角    ';
    61445: str := '拖动右上角    ';
    61446: str := '拖动下边框    ';
    61447: str := '拖动左下角    ';
    61448: str := '拖动右下角    ';
    61458: str := '拖动标题栏    ';
    61558: str := '横向滚动条滚动';
    61574: str := '双击横向滚动条';
    61575: str := '纵向滚动条滚动';
    61559: str := '双击纵向滚动条';
    61587: str := '点击最小化图标';
    61490: str := '在非最大化时双击标题栏';
    61730: str := '在最大化时双击标题栏';
  end;

  if str = '' then str := IntToStr(Message.CmdType);

  Text := str;
  inherited;
end;

http://www.cnblogs.com/del/archive/2008/10/31/1323813.html

定义的和未定义的:

已有定义的系统命令常数(感觉有些有问题):
SC_SIZE         = 61440;
SC_MOVE         = 61456;
SC_MINIMIZE     = 61472;
SC_MAXIMIZE     = 61488;
SC_NEXTWINDOW   = 61504;
SC_PREVWINDOW   = 61520;
SC_CLOSE        = 61536;
SC_VSCROLL      = 61552;
SC_HSCROLL      = 61568;
SC_MOUSEMENU    = 61584;
SC_KEYMENU      = 61696;
SC_ARRANGE      = 61712;
SC_RESTORE      = 61728;
SC_TASKLIST     = 61744;
SC_SCREENSAVE   = 61760;
SC_HOTKEY       = 61776;
SC_DEFAULT      = 61792;
SC_MONITORPOWER = 61808;
SC_CONTEXTHELP  = 61824;
SC_SEPARATOR    = 61455;
SC_ICON         = SC_MINIMIZE;
SC_ZOOM         = SC_MAXIMIZE;


未定义的系统命令常数:
61441: 拖动左边框
61442: 拖动右边框
61443: 拖动上边框
61444: 拖动左上角
61445: 拖动右上角
61446: 拖动下边框
61447: 拖动左下角
61448: 拖动右下角

61458: 拖动标题栏

61558: 横向滚动条滚动
61574: 双击横向滚动条
61575: 纵向滚动条滚动
61559: 双击纵向滚动条
61587: 点击最小化图标
61490: 在非最大化时双击标题栏
61730: 在最大化时双击标题栏

http://www.cnblogs.com/del/archive/2008/10/31/1323683.html

------------------------------------------------------------------------------

如果你稍学点 C/C++ 的原始 Windows 编程, 就会发现哪里没有事件, 只有消息.
正因为 Delphi 能够直接使用消息, 所以 C/C++ 能做到的, Delphi 也可以; Delphi 通过事件代替了大部分常用的消息, 所以 Delphi 简单、易用、高效!
如果你喜欢, 在 Delphi 中你可以用消息代替所有事件; 有些消息 Delphi 没有包装成事件(或不方便或不能够包装), 你只能用消息.

http://www.cnblogs.com/del/archive/2008/10/31/1323797.html

原文地址:https://www.cnblogs.com/findumars/p/5054791.html