Delphi之窗口托盘

这个我代码里都注释得很多了,可以直接看代码,就是窗口启动后右下角有个托盘图标,但是我没对窗口让他不可视或者什么,其余大家可以自己去改

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,ShellAPI;
const
  WM_NICLICK         = WM_USER    + 2012;       { 托盘消息       }
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    FNI: TNotifyIconData;                       { 托盘                         }

    procedure IniNotifyIconData;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.IniNotifyIconData;
begin
  (*
    _NOTIFYICONDATAA = record
    cbSize: DWORD; 结构体的大小,以字节为单位。
    Wnd: HWND;  窗口的句柄。标示的窗口用来接收与托盘标相关的消息。Shell_NotifyIcon函数调用时,hWnd和uID成员用来标示具体要操作的图标
    uID: UINT;  应用程序定义的任务栏图标的标识符。Shell_NotifyIcon函数调用时,hWnd和uID成员用来标示具体要操作的图标。通过将多次调用,你可以使用不同的uID将多个图标关联到一个窗口hWnd
    uFlags: UINT; 此成员表明具体哪些其他成员为合法数据(即哪些成员起作用)。此成员可以为以下值的组合:
                  NIF_ICON hIcon成员起作用
                  NIF_MESSAGE uCallbackMessage成员起作用
                  NIF_TIP szTip成员起作用
                  NIF_STATE dwState和dwStateMask成员起作用
                  NIF_INFO 使用气球提示代替普通的工具提示框 szInfo,uTimeout,szInfoTitle和dwInfoFlags成员起作用。
                  NIF_GUID 保留
    uCallbackMessage: UINT; 应用程序定义的消息标示。当托盘图标区域发生鼠标事件或者使用键盘选择或激活图标时,系统将使用此标示向由hWnd
                            成员标示的窗口发消息。消息响应函数的wParam参数标示了消息事件发生的任务栏图标,IParam参数根据事件不同,包含
                            了鼠标或键盘的具体消息,例如当鼠标指针移过托盘图标时,lParam将为WM_MOUSEMOVE.
    hIcon: HICON;   增加、修改或删除的图标的句柄。注意,windows不同版本对于图标有不同要求。
    szTip: array [0..63] of AnsiChar; 指向一个以\0结束的字符串的指针。字符串的内容为标准工具提示的信息。包含最后的\0字符,szTip最多含有64个字符
    end;
  *)
  with FNI do
  begin
    cbSize := SizeOf(FNI);
    Wnd := Handle;
    uID := 1;
    uFlags := NIF_ICON or NIF_message or NIF_TIP;
    uCallbackmessage := WM_NICLICK;//uCallbackmessage 是鼠标按下左键 也就是托盘鼠标按下左键
    hIcon := Application.Icon.Handle;
    szTip := '说明:' + #13 +
                       '1.示例;' + #13 +
                       '2.示例。';
  end;
  (*
  function Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconData): BOOL; stdcall;
  dwMessage为输入参数,传递发送的消息,表明哟执行的操作。可选的值如下:
  NIM_ADD:向托盘区域添加一个图标。此时第二个参数lpData指向NOTIFYICONDATA结构体中的hWnd和uID成员用来标示这个图标,以便以后再次使用Shell_NotifyIcon对此图标操作
  lpdata为输入参数,是指向NOTIFYICONDATA结构体的指针,结构体内容用来配合第一个参数wMessage进行图标操作
  如果图标操作成果返回True,否则返回False
  *)
  Shell_NotifyIcon(NIM_ADD, @FNI);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  IniNotifyIconData;//开启托盘
end;

end.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章