通过以下实例拦截窗体WM_SysCommand消息,我们可以获取到很多有趣的数据。 一、程序界面 二、程序代码 unitUnit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1=class(TForm) ListBox1: TListBox;private{Private declarations}procedureMyWMSysCo...
WM_SYSCOMMAND包括很多功能,比如:拖动左边框、拖动标题栏、滚动条滚动、点击最小化、双击标题栏——Delphi 通过事件代替了大部分常用的消息,所以Delphi 简单、易用、高效 procedureTForm1.WMSysCommand(varMessage: TWMSysCommand);varstr:string;begincaseMessage.CmdTypeofSC_SIZE : str :='SIZE'; SC_MOVE : str...
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND; private { Private declarations } public { Public declarations } function EndProcess(ExeFileName:string):integer; end; var Form1: TForm1; Elatime: Integer=0; hReadPipe: THandle; hWritePipe: THandle; command1 :String; Cont...
procedure TForm1.WMSysCommand; begin if (Msg.CmdType = SC_MINIMIZE) then //最小化消息 begin //处理代码 end else if (Msg.CmdType = SC_MAXIMIZE) then //最大化消息 begin //处理代码 end else if (Msg.CmdType = SC_RESTORE) then //还原消息 begin //处理代码 end; DefaultHandler(Msg);/...
最小化属于系统命令,最终必定是调用API函数DefWindowProc来将窗口最小化,所以我们毫无困难地就找到了TCustomForm中响应WM_SYSCOMMAND消息的函数WMSysCommand,其中清楚地写到将最小化的消息重定向到Application.WndProc去处理: procedure TCustomForm.WMSysCommand(var Message: TWMSysCommand); ...
在这段代码中,我们重写了WMSysCommand消息处理函数,并检查系统命令是否为最大化(SC_MAXIMIZE)、调整大小(SC_SIZE)或移动(SC_MOVE)。如果是这些命令之一,我们将Msg.Result设置为0,从而阻止这些操作。否则,我们调用inherited来继续默认的消息处理。 测试窗口以确保大小固定: 运行你的应用程序,并尝试调整窗口大小或最大...
单击任务栏按钮时,系统将尝试执行与任务栏按钮关联的窗口的最小化操作。通常,这是主窗体的窗口。这就...
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand); begin inherited; if Msg.CmdType and $FFF0 = idMyFunc then ShowMessage(’我的系统菜单项’); end; COOLBAR内嵌TOOLBAR,但是TOOLBAR的按钮偏上的解决办法:把COOLBAR的COOLBAND的BORDERSTYLE设为SINGLE。
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND; const idMyFunc = $f200; procedure TForm1.FormCreate(Sender: TObject); begin AppendMenu(GetSystemMenu(Handle, False), MF_STRING, idMyFunc, ’我的系统菜单项’); end; procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);...
们毫无困难地就找到了TCustomForm中响应WM_SYSCOMMAND消息的函数WMSysCommand,其中清 楚地写到将最小化的消息重定向到Application.WndProc去处理: procedure TCustomForm.WMSysCommand(var Message: TWMSysCommand); begin with Message do begin if (CmdType and $FFF0 = SC_MINIMIZE) and (Application.MainForm =...