怎样写一个事件:当Form最小化时,放在任务栏右下脚(50分)

  • 主题发起人 主题发起人 fxingf
  • 开始时间 开始时间
F

fxingf

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样写一个事件:当Form最小化时,放在任务栏右下脚
 
去www.codelphi.com查阅有关任务栏编程的文章。
 
下载一个控件TrayIcon
 
这种资料太多了,你在"大富翁论坛"就可以找到很多的
 
关系系统托盘的编程网上有好多例子,也有专门的控件。
MSDN 中也有示例,其实这一做法,各种语言是相通的,都是调用系统API。
 
刚刚回答过,就再浪费一点大富翁的流量吧:
隐藏:
ShowWindow(Wnd:HWND;SW_Hide);
Shell_NotifyIcon(NIM_ADD,@Tray);
恢复:
ShowWindow(Wnd:HWND;SW_RESTORE);
Shell_NotifyIcon(NIM_DELETE,@Tray);
.....
先要定义 Tray 数据结构的初植,其中就有一个响应消息的项目,
反正是套路,随便在大富翁的[站内检索]--->[已答问题]中查找就有怕
不下三四十页,不用看完,拿一个来用就行。
 
private
procedure WMSYSCOMMAND(var msg: TWMSYSCOMMAND); message WM_SYSCOMMAND;
procedure AddTray;
procedure RemoveTray;
public
end;

var
Form1 : TForm1;

implementation

{$R *.DFM}

//uses ShellApi

//增加小图标
procedure TForm1.AddTray;
var
Nid : TNotifyIconData;
begin
FillChar(Nid, SizeOf(TNotifyIconData), 0);
Nid.cbSize := SizeOf(TNotifyIconData);
Nid.Wnd := Handle; //窗口句柄
Nid.uID := 1; //内部标识,可任意指定
Nid.hIcon := Application.Icon.Handle; //要加入的图标句柄
Nid.szTip := '图标示例程序'; //提示字符串
Nid.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE; //指明哪些字段有效
if not Shell_NotifyIcon(NIM_ADD, @nid) then
Application.Terminate;
end;

//去除小图标
procedure TForm1.RemoveTray;
var
Nid : TNotifyIconData;
begin
FillChar(Nid, SizeOf(TNotifyIconData), 0);
Nid.cbSize := SizeOf(TNotifyIconData);
Nid.uID := 1; //内部标识,与加入小图标时的数一致
Nid.Wnd := Handle; //窗口句柄
Shell_NotifyIcon(NIM_DELETE, @nid); //去掉小图标
end;

procedure TForm1.WMSYSCOMMAND(var msg: TWMSYSCOMMAND);
begin
if msg.CmdType = SC_MINIMIZE then
AddTray //增加图标
else
RemoveTray;
inherited;
end;


我没有捕捉到窗体恢复的事件,你自己改一下
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
612
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部