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.

 

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