学习 Message(17): WM_SYSCOMMAND 消息[一]


已有定义的系统命令常数(感觉有些有问题):

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: 在最大化时双击标题栏



//可能还有...


 
   

WM_SYSCOMMAND 是做什么的? 咱们先看看把 WM_SYSCOMMAND 消息封锁掉是什么样子吧:

代码文件:

unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;



type

  TForm1 = class(TForm)

    Label1: TLabel;

    procedure FormCreate(Sender: TObject);

    procedure FormDblClick(Sender: TObject);

  protected

    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



procedure TForm1.FormCreate(Sender: TObject);

const

  br = #13#10;

begin

  Label1.AutoSize := True;

  Label1.Caption :=

    '此窗体屏蔽了 SYSCOMMAND 消息!' + br +

    '将无法改变窗体大小;' + br +

    '将无法移动窗体;' + br +

    '将无法最大、最小化窗体;' + br +

    '也将无法通过常规途径关闭窗体.' + br +

    '' + br +

    '所以提供了双击窗体关闭的功能.';

  Label1.OnDblClick := OnDblClick;

end;



procedure TForm1.FormDblClick(Sender: TObject);

begin

  Close;

end;



procedure TForm1.WMSysCommand(var Message: TWMSysCommand);

begin

//  inherited; {取消这句的注释, WM_SysCommand 就活了}

end;



end.


 
   
窗体文件:

object Form1: TForm1

  Left = 0

  Top = 0

  Caption = 'Form1'

  ClientHeight = 172

  ClientWidth = 264

  Color = clBtnFace

  Font.Charset = DEFAULT_CHARSET

  Font.Color = clWindowText

  Font.Height = -11

  Font.Name = 'Tahoma'

  Font.Style = []

  OldCreateOrder = False

  OnCreate = FormCreate

  OnDblClick = FormDblClick

  PixelsPerInch = 96

  TextHeight = 13

  object Label1: TLabel

    Left = 24

    Top = 24

    Width = 89

    Height = 33

    Caption = 'Label1'

  end

end


 
   

你可能感兴趣的:(command)