深入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 ...
随机推荐
- python dataframe筛选列表的值转为list【常用】
网上方法参差不齐,无注释解释不好秒懂,没有自己想要的,故自己试验一番~ 1. 筛选列表中,当b列中为’1’时,所有c的值,然后转为list 2 .筛选列表中,当a列中为'one',b列为'1'时,所有 ...
- No module named 'flask.ext'
在学习flask进行web开发的时候,遇到如下报错信息: No module named 'flask.ext' 原因:新版的flask不再支持flask.ext,所以,需要换种方式导入相应第三方库 ...
- 【Linux】解决Linux服务器内存不足问题
在Linux服务器上使用Jmeter进行压测的时候,遇到了一个错误: 根据这里的提示: Java HotSpot(TM) -Bit Server VM warning: INFO: os::commi ...
- HashMap源码(一)
本文主要是从学习的角度看HashMap源码 HashMap的数据结构 HashMap是一个数组+链表的结构(链表散列),每个节点在HashMap中以一个Node存在: HashMap的初始化 publ ...
- ECMAScript基本语法——④变量
简介 变量:一小块存储数据的内存空间先申请了一块内存空间,规定空间的存储类型,给空间赋值3, 想找到这个3可以通过内存空间的地址值,但是通过地址值太麻烦了,给这个空间起了一个名字a 通过这个a可以找到 ...
- 2019牛客训练赛第七场 C Governing sand 权值线段树+贪心
Governing sand 题意 森林里有m种树木,每种树木有一定高度,并且砍掉他要消耗一定的代价,问消耗最少多少代价可以使得森林中最高的树木大于所有树的一半 分析 复杂度分析:n 1e5种树木,并 ...
- 使用BeautifulSoup爬取汽车之家新闻
1 先select到改数据上层的标签,取第一个[0],然后attrs获取单标签里面的内容,或者get_text获取成对标签内文本2 find就是明确了标签之后,是唯一的,就可以使用find(标签名). ...
- slice 实现原理
package main /* #include <stdlib.h> */ import "C" import ( "unsafe" " ...
- java特性之二----继承
1.继承的概述 ============================================================================================ ...
- 查看ie版本
window10系统还好说,一般都是IE11版本,其他系统或服务器看=查看ie版本就很烦 方法一:按组合键 ALT+H 打开“帮助”,再按 A 选择“关于Internet Explorer” 方法二 ...