如何在Delphi中,实现如下功能

Ninputer 2001-10-08 04:30:34
按最小化按钮之后缩到任务栏的Sys Tray中,双击图标后,恢复原状?
关键是如何双击恢复原状,试过很多方法都不能实现
...全文
103 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ninputer 2001-10-12
  • 打赏
  • 举报
回复
给分!
csdn72 2001-10-08
  • 打赏
  • 举报
回复
参考下面代码:
type
TForm1 = class(TForm)
private
procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;
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; //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 //把 WM_LBUTTONDOWN 改为双击的值就可以了,帮助里有,我忘了
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;
能完成你所要求的功能
Ninputer 2001-10-08
  • 打赏
  • 举报
回复
哎,在网上搜索很久,也没找到。先谢了,不过有恢复后的窗体无法最小化的毛病
是怎么回事
cobi 2001-10-08
  • 打赏
  • 举报
回复
我这里有个notifyicon的pas,加入到工程中即可实现托盘功能,给个email吧
CrzWind 2001-10-08
  • 打赏
  • 举报
回复
这种东西到处都是呀,上面说的地址就可以找到哇,RX控件组里面也有这样的东西哦
别忘了加分哦
powerlee 2001-10-08
  • 打赏
  • 举报
回复
RXLIB里边有个TrayIcon控件封装了双击事件
Nicky_he 2001-10-08
  • 打赏
  • 举报
回复
建议看看控件的源代码,这样效果比较好
sundayboys 2001-10-08
  • 打赏
  • 举报
回复
建议你用一个Cooltrayicon的控键,在ONDClick事件中写,MainForm。show,至于trayicon要不要随便你了,那个控件可以到http://www.torry.net/vcl/system/trayicons/trayicon.zip下载到。
cobi 2001-10-08
  • 打赏
  • 举报
回复
试一下使用trayicon控件,应当可以帮你解决问题

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧