//自己定义一个消息:
const
WM_BARICON=WM_USER+200;
//得到这个消息
procedure WMBarIcon(var Message:TMessage);message WM_BARICON;//当最小化是将窗口化为图标
procedure TForm1.WMSysCommand (var Message:TMessage);
var
lpData:PNotifyIconData;
begin
if Message.WParam = SC_ICON then
begin
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;
lpData.Wnd := Form1.Handle;
lpData.hIcon := image2.Picture.Icon.Handle ;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := '欢迎使用本软件!';
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.N1Click(Sender: TObject);
var
lpData:PNotifyIconData;
begin
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;
lpData.Wnd := Form1.Handle;
lpData.hIcon := image2.Picture.Icon.Handle ;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := '欢迎使用本软件!';
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_DELETE,lpData);
dispose(lpData);
Form1.Visible := True;
end;
//如果用户点击任务栏图标则将图标删除并回复窗口。
procedure TForm1.WMBarIcon(var Message:TMessage);
var
lpData:PNotifyIconData;
p:tpoint;
begin
if (Message.LParam = WM_LBUTTONDOWN) then
begin
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;//SizeOf(PNotifyIconDataA);
lpData.Wnd := Form1.Handle;
lpData.hIcon := image2.Picture.Icon.Handle ;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := '欢迎使用本软件!';
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_DELETE,lpData);
dispose(lpData);
Form1.Visible := True;
end;
//当单击鼠标右键时打开菜单
if (message.lparam=WM_RBUTTONDOWN) then
begin
getcursorpos(p);
popupmenu1.Popup (p.x,p.y);
end;
end;
const
WM_BARICON=WM_USER+200;
//得到这个消息
procedure WMBarIcon(var Message:TMessage);message WM_BARICON;//当最小化是将窗口化为图标
procedure TForm1.WMSysCommand (var Message:TMessage);
var
lpData:PNotifyIconData;
begin
if Message.WParam = SC_ICON then
begin
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;
lpData.Wnd := Form1.Handle;
lpData.hIcon := image2.Picture.Icon.Handle ;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := '欢迎使用本软件!';
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.N1Click(Sender: TObject);
var
lpData:PNotifyIconData;
begin
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;
lpData.Wnd := Form1.Handle;
lpData.hIcon := image2.Picture.Icon.Handle ;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := '欢迎使用本软件!';
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_DELETE,lpData);
dispose(lpData);
Form1.Visible := True;
end;
//如果用户点击任务栏图标则将图标删除并回复窗口。
procedure TForm1.WMBarIcon(var Message:TMessage);
var
lpData:PNotifyIconData;
p:tpoint;
begin
if (Message.LParam = WM_LBUTTONDOWN) then
begin
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;//SizeOf(PNotifyIconDataA);
lpData.Wnd := Form1.Handle;
lpData.hIcon := image2.Picture.Icon.Handle ;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := '欢迎使用本软件!';
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_DELETE,lpData);
dispose(lpData);
Form1.Visible := True;
end;
//当单击鼠标右键时打开菜单
if (message.lparam=WM_RBUTTONDOWN) then
begin
getcursorpos(p);
popupmenu1.Popup (p.x,p.y);
end;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货