如何让窗体最小化时只在任务托盘显示为一个小图标?(20分)

  • 主题发起人 asbeforelong
  • 开始时间
A

asbeforelong

Unregistered / Unconfirmed
GUEST, unregistred user!
如何让窗体最小化时只在任务托盘显示为一个小图标?并且鼠标右击小图标时能弹出菜单?^_^ 最好给出尽量简单一点的源程序,谢谢了。^_^
 
这个问题回答多次了。
CONST CM_TRAYICON = CM_BASE + 84;
....
private
{ Private declarations }
IconData:TNotifyIconData;
procedure OnIconNotify(var Msg: TMessage);message CM_TRAYICON;
....
procedure TMainFM.OnIconNotify(var Msg: TMessage);
Var
MPoint:TPoint;
begin
Case Msg.LParam of
WM_LBUTTONDBLCLK:
begin
Visible := True;
Application.Restore;
Application.BringToFront;
Shell_NotifyIcon(NIM_DELETE, @IconData);
end;
WM_RBUTTONUP:
begin
GetCursorPos(MPoint);
PopMenu.Popup(MPoint.x,MPoint.y);
end;
end;
end;

procedure TMainFM.PopMenuPopup(Sender: TObject);
begin
mn_Minimize.Enabled:=Visible;
mn_Restore.Enabled:=NOT Visible;
end;

procedure TMainFM.AppMinimized(Var Msg: TMessage);
begin
if Msg.WParam =SC_MINIMIZE then
begin
with IconData do begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Handle;
uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
hIcon := LoadIcon(hInstance,'MAINICON');
StrPLCopy(szTip, GetShortHint(' 程序运行中...'), SizeOf(szTip) - 1);
uCallbackMessage := CM_TRAYICON;
uID := 0;
end;
Shell_NotifyIcon(NIM_ADD, @IconData);
Hide;
end
else
DefWindowProc(Handle,WM_SYSCOMMAND,Msg.wparam,Msg.LParam);
end;

procedure TMainFM.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @IconData);
end;
 
唉,给我们送分不是,
先到论坛上搜一下嘛,巨多相关主题,何必浪费分呢
 
可以使用控件啊
 
trayico

www.playicq.com下载
 
哈哈哈,混分喽
但是楼主不一定还是这个马甲
 
www.playicq.com
 
接受答案了.
 
顶部