在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标。象FoxMail ---- 参数lpData指向的PNotifyIconData结构的定义如下: _NOTIFYICONDATAW = TNotifyIconData = _NOTIFYICONDATAW; ---- 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 UserPro(Var Message: TMessage):message Procedure UserClass.UserPro(Var Message:TMessage); http://www.cnblogs.com/key-ok/p/4594662.html |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论