我想我的程序运行后在系统托盘处显示,要求无论实双击托盘弹出程序还实最小化程序,都可以在托盘处看到我的程序图标,我现在的代码只是在最小化的时候才会出现在托盘区,如果要在最大化程序时也在托盘区显示图标,该怎么做呀。
procedure TBoxForm.WMSysCommand(var Message:TMessage);
var
  lpData:PNotifyIconData;
begin
 if (Message.WParam = SC_MINIMIZE ) then
 begin
    //如果用户最小化窗口则将窗口隐藏并在任务栏上添加图标
    //定义托盘图标结构。
    lpData := new(PNotifyIconDataA);
    //lpData变量字节数。
    lpData.cbSize := 88;
    //SizeOf(PNotifyIconDataA);
    lpData.Wnd := self.Handle;
    //要加入的图标句柄,可任意指定,此处为在Tform中Icon属性中指定的图标。
    lpData.hIcon := Application.Icon.Handle;
    //回调函数消息 。
    lpData.uCallbackMessage := WM_BARICON;
    //内部标识,可设为任意数。
    lpData.uID :=0;
    //托盘信息。
    lpData.szTip := 'FWS版本升级程序';
    //指明那些消息有效。
    lpData.uFlags := NIF_ICON or NIF_MESSAGE  or NIF_TIP;
    //将程序的窗口样式设为TOOL窗口,可避免在任务条上出现
    SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
    //向托盘中添加图标。
    Shell_NotifyIcon(NIM_ADD,lpData);
    //释放。
    dispose(lpData);
    //设置隐藏。
    ShowWindow(self.Handle, SW_HIDE);
    Application.ShowMainForm := false;
 end
 else
 begin
   //如果是其它的SystemCommand消息则调用系统缺省处理函数处理之。
   DefWindowProc(self.Handle,Message.Msg,Message.WParam,Message.LParam);
 end;
end;  

解决方案 »

  1.   

    private      { Private declarations }
          tnd :TNotifyIconData;
       
    在FormCreate事件中处理:
         tnd.cbSize           := sizeof(NOTIFYICONDATA);
          tnd.Wnd              := Handle;
          tnd.uID              := 1;
          tnd.uFlags           := NIF_MESSAGE or NIF_ICON or NIF_TIP;
          tnd.uCallbackMessage := MOUSE_MESSAGE;
          tnd.hIcon            := LoadIcon(HInstance,'MAINICON');
          tnd.szTip            :='Ä£ÄâÆÁÓë¼à¿ØϵͳͨÐÅת»»³ÌÐò';
          Shell_NotifyIcon(NIM_ADD,@tnd);在FormDestroy事件中处理:      Shell_NotifyIcon(NIM_DELETE,@tnd);
      

  2.   

    给你个托盘控件的源程序吧
    http://www.cndelphi.com/bbs/dispbbs.asp?boardID=50&ID=150&skin=0
      

  3.   

    我自己想在以个单元里写一个TPopupMenu,设置他的属性,并在一个过程中引用,可是我写的总是错,你知道TPopupMenu的特性嘛,看看我的代码  
     PopupMenu :=TPopupMenu.Create(self);   PopupMenu.Items.Items[0].Name :='D1';
       PopupMenu.Items.Items[0].Caption :='ni ho';
       PopupMenu.Items.Items[0].GroupIndex :=1;