深入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.
深入delphi编程理解之消息(四)使用TWMSysCommand结构体的WM_SysCommand消息应用的更多相关文章
- 深入delphi编程理解之消息(一)WINDOWS原生窗口编写及消息处理过程
通过以sdk方式编制windows窗口程序,对理解windows消息驱动机制和delphi消息编程有很大的帮助. sdk编制windows窗口程序的步骤: 1.对TWndClass对象进行赋值; 2. ...
- 深入delphi编程理解之消息(二)发送消息函数及消息编号、消息结构体的理解
一.delphi发送消息的函数主要有以下三个: (一).SendMessage函数,其原型如下: function SendMessage( hWnd: HWND; {目标句柄} Msg: UINT; ...
- 深入delphi编程理解之消息(三)发送消息函数的一般应用实例
通过对消息函数(SendMessage.PostMessage.Perform)的一般应用,来说明sendmessage.postmessage函数和perform 方法调用方式和结果的区别. 一.程 ...
- Windows消息队列(优先队列,结构体中放比较函数)
Windows消息队列 消息队列是Windows系统的基础.对于每个进程,系统维护一个消息队列.如果在进程中有特定事件发生,如点击鼠标.文字改变等,系统将把这个消息加到队列当中.同时,如果队列不是空的 ...
- iOS学习笔记44-Swift(四)枚举和结构体
一.Swift的枚举 枚举是一系相关联的值定义的一个公共的组类型,同时能够让你在编程的时候在类型安全的情况下去使用这些值.Swift中的枚举比OC中的枚举强大得多, 因为Swift中的枚举是一等类型, ...
- 深入delphi编程理解之消息(六)无窗口单元消息的创建、接受及dispatch模式编程
一.程序界面 二.程序代码 (一).主界面代码 //========================================================================== ...
- 深入delphi编程理解之消息(五)重写(override)dispatch、wndproc方法和Application.OnMessage事件
dispatch.wndproc是VCL framework在TWinCtronl定义的虚拟方法,下面程序通过重写(override)这两函数拦截WM_LBUTTONDOWN消息,来与Applicat ...
- 深入delphi编程理解之接口(一)接口与类的异同及接口的声明和实现
一.抽象类与接口的异同 接口简单的理解可认为是一个抽象类,我们先定义一个抽象类和接口来对比之间的异同,代码如下: type IFormattedNumber = interface //定义接口 fu ...
- Delphi中运行时改变panel的位置及大小(WM_SysCommand消息配合参数使用,很奇妙) good
procedure TForm1.pnl1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Inte ...
随机推荐
- 【NOIP2011提高组】计算系数
计算系数 算法:真·滚动数组模拟!!! 马上CSP/S了,这是远在今年暑假前的一天的校内考试题中的一道.当时做的时候不会组合数,不会二项式定理,不会DP,不会……只知道应该n*n的空间存一个杨辉三角形 ...
- JDBC——抽取工具类
目的:简化书写 分析: 1.注册驱动 2.获取连接对象 3.释放资源 1.注册驱动 2.获取连接对象 需求:不想传递参数,还能保证工具类的通用性解决方案:配置文件 jdbc.properties ur ...
- 巨杉内核笔记(一)| SequoiaDB 会话(session)简介
SequoiaDB 会话(session)简介 会话(Session)的基本概念 容易弄混淆的两个概念是会话与连接. 通俗来讲,会话(Session) 是通信双方从开始通信到通信结束期间的一个上下文( ...
- linux 扩展内存
一.逻辑卷创建使用 https://www.cnblogs.com/xiaoluo501395377/archive/2013/05/24/3096087.html fdisk -l pvcreate ...
- classification tips 01: npy file
numpy array storation; npy/npz file. 文件存取的格式:二进制和文本.二进制格式的文件又分为NumPy专用的格式化二进制类型和无格式类型. numpy文件存取-npz ...
- 测试linux是否能访问外网
方法1 curl -l http://www.baidu.com 方法2 wget http://www.baidu.com
- sql查询 —— 分组
-- 分组 -- group by -- 分组只有与聚合函数一起使用才能发挥作用 -- 分组只限于字段分明 例如 性别 ,部门, --列出所有性别 select gender from student ...
- 10day 系统的selinux服务程序优化
selinux服务对root用户权限进行控制 很多企业中:selinux服务默认关闭 centos6==centos7 临时关闭: 检查确认: getenforce --- 确认selinux服务是否 ...
- 【New】WoSo_我搜 正式上线
[New]WoSo_我搜 正式上线 一站式搜索平台 聚合多种领域搜索引擎,大大提高搜索效率,使搜索更简单 地址:https://huangenet.github.io/WoSo/
- DOM深度优先遍历算法
通过深度优先遍历算法,可以依次获取每个后代节点的对象. 顺序:有子元素先获取子元素,再获取兄弟元素 主要有2步骤: //1.创建节点迭代器对象(parent是要遍历的节点) var iterator ...