深入delphi编程理解之消息(四)使用TWMSysCommand结构体的WM_SysCommand消息应用

  通过以下实例拦截窗体WM_SysCommand消息,我们可以获取到很多有趣的数据。

      一、程序界面

  二、程序代码

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
  private
    { Private declarations }
    procedure MyWMSysCommand(var AMessage: TWMSysCommand); message WM_SysCommand;
  public
    { Public declarations }
  end; var Form1: TForm1; implementation {$R *.dfm} procedure Tform1.MyWMSysCommand(var AMessage: TWMSysCommand); var str: string; begin case AMessage.CmdType of //可能通过查找TWMSysCommand结构体查找wParam以下参数  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; ListBox1.Items.Add(str); ListBox1.Items.Add(Format('X:%dY:%2d', [AMessage.XPos, AMessage.YPos])); ListBox1.Perform(WM_VSCROLL, SB_BOTTOM, 0); //移动到VScroll到底部,保证新加入的文字总是可见。可以通过查找 TWMScroll结构体查找第二个参数SB_XXXX inherited; //注释这个一行,窗口将无法关闭 end; end.

猜你喜欢

转载自www.cnblogs.com/LifeStartPoint/p/12219934.html