已有定义的系统命令常数(感觉有些有问题):
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

posted on 2008-10-31 14:44  万一  阅读(8600)  评论(3编辑  收藏  举报