!!!如何做个自定义的消息啊,,,,,最好给个完整的代码好了!!! http://delphibbs.com/delphibbs/dispq.asp?lid=757737去看看 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 运行下面的程序,点击程序窗口标题栏上的最小化按钮,你就可以看到窗口被“最小化”成了一个任务栏图标,点击图标,窗口又会恢复原来的状态。 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ShellAPI; const WM_BARICON=WM_USER+200; type TForm1 = class(TForm) private procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND; procedure WMBarIcon(var Message:TMessage);message WM_BARICON; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.WMSysCommand (var Message:TMessage); var lpData:PNotifyIconData; begin if Message.WParam = SC_ICON then begin //如果用户最小化窗口则将窗口 隐藏并在任务栏上添加图标 lpData := new(PNotifyIconDataA); lpData.cbSize := 88; //SizeOf(PNotifyIconDataA); lpData.Wnd := Form1.Handle; lpData.hIcon := Form1.Icon.Handle; lpData.uCallbackMessage := WM_BARICON; lpData.uID :=0; lpData.szTip := 'Samples'; lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; Shell_NotifyIcon(NIM_ADD,lpData); dispose(lpData); Form1.Visible := False; end else begin //如果是其它的SystemCommand 消息则调用系统缺省处理函数处理之。 DefWindowProc(Form1.Handle,Message. Msg,Message.WParam,Message.LParam); end; // end; procedure TForm1.WMBarIcon(var Message:TMessage); var lpData:PNotifyIconData; begin if (Message.LParam = WM_LBUTTONDOWN) then begin //如果用户点击任务栏图标则将图标删除并回复窗口。 lpData := new(PNotifyIconDataA); lpData.cbSize := 88;//SizeOf(PNotifyIconDataA); lpData.Wnd := Form1.Handle; lpData.hIcon := Form1.Icon.Handle; lpData.uCallbackMessage := WM_BARICON; lpData.uID :=0; lpData.szTip := 'Samples'; lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; Shell_NotifyIcon(NIM_DELETE,lpData); dispose(lpData); Form1.Visible := True; end; end; end. 首先在单元的声明部分定义消息:const MY_Message=WM_USER+100; //用户自定义的消息范围为100~$7FFF;然后声明和定义消息处理过程:procedure MYMessage(var Msg:TMessage);message MY_Message;//声明消息处理过程;//定义消息处理过程;procedure TForm1.MYMessage(var Msg:TMessage);begin {填写相应代码}end;这样自定义消息的处理过程声明和定义完毕后,即可在需要发送消息时使用;如下;procedure TForm1.Button1Click(Sender: TObject);begin form1.Perform(MY_Message,0,0);//发送自定义的消息;end; 请教一个很简单SQL语句的写法: 关于树型结构的问题????? 在程序中利用pdf.ocx浏览pdf文件 在线等待,关于postmessage的问题? TfrPreview使用求教 DELPHI中如何将数据写到WORD文档,请给实例,多谢 请问大虾,用DELPHI怎么锁住鼠标? 忙了一个多月,今天beta终于完成了,特来发分! 谁能教我使用ActiveSkin? cxgriddbtableview 单元格如何输入字符 哪个网站有世界杯直播? 对昨天捧场的大虾们表示感谢!今天来问个关于调用外部程序的问题???
unit Unit1;
interface
uses
Windows, Messages, SysUtils,
Classes, Graphics, Controls, Forms,
Dialogs,ShellAPI; const
WM_BARICON=WM_USER+200; type
TForm1 = class(TForm)
private
procedure WMSysCommand(var
Message: TMessage); message WM_SYSCOMMAND;
procedure WMBarIcon(var
Message:TMessage);message WM_BARICON;
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.DFM}
procedure TForm1.WMSysCommand
(var Message:TMessage);
var
lpData:PNotifyIconData;
begin
if Message.WParam = SC_ICON then
begin
//如果用户最小化窗口则将窗口
隐藏并在任务栏上添加图标
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;
//SizeOf(PNotifyIconDataA);
lpData.Wnd := Form1.Handle;
lpData.hIcon := Form1.Icon.Handle;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := 'Samples';
lpData.uFlags := NIF_ICON
or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_ADD,lpData);
dispose(lpData);
Form1.Visible := False;
end
else
begin
//如果是其它的SystemCommand
消息则调用系统缺省处理函数处理之。
DefWindowProc(Form1.Handle,Message.
Msg,Message.WParam,Message.LParam);
end;
//
end; procedure TForm1.WMBarIcon(var Message:TMessage);
var
lpData:PNotifyIconData;
begin
if (Message.LParam = WM_LBUTTONDOWN) then
begin
//如果用户点击任务栏图标则将图标删除并回复窗口。
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;//SizeOf(PNotifyIconDataA);
lpData.Wnd := Form1.Handle;
lpData.hIcon := Form1.Icon.Handle;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := 'Samples';
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_DELETE,lpData);
dispose(lpData);
Form1.Visible := True;
end;
end; end.
procedure TForm1.MYMessage(var Msg:TMessage);begin {填写相应代码}end;这样自定义消息的处理过程声明和定义完毕后,即可在需要发送消息时使用;如下;
procedure TForm1.Button1Click(Sender: TObject);begin form1.Perform(MY_Message,0,0);//发送自定义的消息;end;