这时有现成的例子,它定义了一个为MW_IcionMessage;的消息来响应那上托盘图标的事件
procedure TrayIcon(var Msg: TMessage); Message WM_IconMessage;
procedure TMainForm.MyShellNotifyIcon; //实现托盘
begin
with Nid do
begin
cbSize := SizeOf(Nid);
Wnd := Handle;
Uid := 1;
uFlags := Nif_Message or Nif_Icon or Nif_Tip;
// 以下函数获取“wm_IconMessage”消息
uCallbackMessage := WM_IconMessage;
HIcon := Application.Icon.Handle; //原来是HIcon := Icon.Handle;
szTip := '拨号精灵V1.0';
end;
Shell_NIcoV := Shell_NotifyIcon(Nim_Add, @Nid);
end;
procedure TMainForm.TrayIcon(var Msg: TMessage);
var PT: TPoint;
begin
if (Msg.LParam = WM_RBUTTONDOWN) then
begin
GetCursorPos(PT);
PopupEx(Self, PopupMenu1, PT.x, PT.y);
end
else
if (Msg.LParam = WM_LBUTTONDBLCLK) then
if not(Self.Visible) then
Self.Show;
end;
来自 :Bcbhua 时间 :2000-09-21 10:17:00
if (Msg.LParam = WM_RBUTTONDOWN) then begin
GetCursorPos(PT);
在这里加入:SetForegroundWindow(Handle);能解决你的第二个问题(我用的是C++)
PopupEx(Self, PopupMenu1, PT.x, PT.y); end else
if (Msg.LParam = WM_LBUTTONDBLCLK) then if not(Self.Visible) then
Self.Show;end;