当前所在位置: 首页 > 论文范文 > 正文

系统托盘的编程

0 次下载 页 1807 字【 字体:

论文指导服务

毕业论文网专业团队提供毕业设计、论文写作指导及相关咨询服务

论文指导 毕业设计 答辩咨询
微信号已复制到剪贴板

  系统托盘的编程

  托盘消息处理:

  在Shell32.DLL动态链接库中包括一个函数Shell_NotifyIconA()可通知Windows在任务条右下角加入一个小图标,可惜该函数的详细说明未收入Delphi的`帮助文档中。现将实现例程示范如下:

  unit pro2;

  interface

  uses

  。。。, Menus,shellAPI; //TNotifyIconData是定义在shellAPI单元的

  {自定义消息,当小图标捕捉到鼠标事件时Windows向回调函数发送此消息}

  const WM_MYTRAYICONCALLBACK = WM_USER 1000 ;

  。。。。

  private

  MyTrayIcon : TNotifyIconData ;

  procedure WMMyTrayIconCallBack(Var Msg : TMessage); message WM_MYTRAYICONCALLBACK ;

  //托盘消息处理过程

  procedure WMCommand(Var msg : TWMCommand); message WM_Command;

  //处理托盘图标的右键菜单事件

  procedure Minimize(var mess:TWMNCLBUTTONDOWN); message WM_NCLBUTTONDOWN;

  //窗体最小化时的消息处理

  。。。。。。。。

  procedure TForm1.FormCreate(Sender: TObject);

  begin

  //将程序窗口样式设为TOOL窗口,避免在任务栏上出现

  SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);

  end;

  procedure TForm1.FormShow(Sender: TObject);

  begin

  //设置托盘

  Icon.Handle := LoadIcon(Hinstance,'MAINICON');

  MyTrayIcon.cbSize := SizeOf(TNotifyIconData);// nid变量的字节数

  MyTrayIcon.Wnd := Handle ;// 主窗口句柄

  MyTrayIcon.uID := 1 ;// 内部标识,可设为任意数

  MyTrayIcon.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE ;// 指明哪些字段有效

  MyTrayIcon.uCallBackMessage := WM_MYTRAYICONCALLBACK ;//回调函数消息,将自定义托盘消息传递进去

  MyTrayIcon.hIcon := Application.Icon.Handle; // 要加入的图标句柄,可任意指定

  StrCopy(MyTrayIcon.szTip, PChar(Caption));

  Shell_NotifyIcon(NIM_ADD,@MyTrayIcon);

  ShowWindow(Handle,sw_Hide);

  // Visible := False ;//当程序启动时就最小化在托盘区即Form.Create时启用此语句

  Application.ShowMainForm := False ;

  SetForegroundWindow(Application.Handle);

  end;

  ////消息过程实现

  procedure TForm1.WMMyTrayIconCallBack(var Msg: TMessage);

  var CursorPos : TPoint;

  begin

  case Msg.LParam of

  WM_LBUTTONDBLCLK : //双击消息:弹出主窗口

  begin

  Visible := not Visible ;

  Application.ShowMainForm := Visible ;

  SetForegroundWindow(Application.Handle);

  end ;

  WM_RBUTTONDOWN : //鼠标右键:弹出菜单

  下一页

阅读全文