Delphi實現Windows的氣泡提示樣式

其實也不復雜,主要使用到shellAPI下的TNotifyIconData這個結構體:shell

    

typedef struct _NOTIFYICONDATA {    
    DWORD cbSize;        //結構體的大小,以字節爲單位    
    HWND hWnd;           //窗口的句柄    
    UINT uID;            //應用程序定義的任務欄圖標的標識符    
    UINT uFlags;         //此成員代表具體哪些其餘成員爲合法數據    
    UINT uCallbackMessage;   //應用程序定義的消息標示    
    HICON hIcon;         //增長、修改或刪除的圖標的句柄    
    TCHAR szTip[64];     //指向一個以/0結束的字符串的指針    
    DWORD dwState;       //Version 5.0,圖標的狀態    
    DWORD dwStateMask;   //Version 5.0. 指明dwState成員的那些位能夠被設置或者訪問    
    TCHAR szInfo[256];   //指向一個以/0結束的字符串的指針,字符串的內容爲氣球提示內容    
    union {    
        UINT uTimeout;   //表示氣球提示超時的時間,單位爲毫秒,此時間後氣球提示將消失    
        UINT uVersion;   //用來設置使用Windows 95 仍是 Windows 2000風格的圖標消息接口    
    };    
    TCHAR szInfoTitle[64];   //指向一個以/0結束的字符串的指針。字符串的內容爲氣球提示的標題    
    DWORD dwInfoFlags;   //設置此成員用來給氣球提示框增長一個圖標,增長的圖標出如今氣球提示標題的左側    
    GUID guidItem;       //保留    
    HICON hBalloonIcon;  //用於Windows Vista或更高版本的自定義氣球圖標    
} NOTIFYICONDATA, *PNOTIFYICONDATA;   

具體怎麼用,給個函數 ->函數

procedure FillDataStructureandCreate(shint:string;dwFlags:Cardinal);
begin
  with FsysIcon do begin
      cbSize:=SizeOf(TNotifyIconData);
      Wnd:=Handle;
      uID:=Application.Icon.Handle;
      uFlags:=NIF_MESSAGE or NIF_ICON or NIF_TIP or NIF_INFO;
      hIcon:=Application.Icon.Handle;
      StrPCopy(szInfoTitle,'標題');
      StrPCopy(szInfo,shint);//shint爲內容
      dwInfoFlags:=dwFlags;//提示的圖標
      uCallbackMessage:=CM_ICONDATA; //自定義的消息處理函數
      uTimeout:=15;
      uVersion:=NOTIFYICON_VERSION_4;
  end;
end;

調用ui

首先得添加spa

  

      FillDataStructureandCreate('右擊從新顯示窗體',NIIF_INFO);
      Shell_NotifyIcon(NIM_ADD,@FsysIcon);

自定義提示指針

  

        FillDataStructureandCreate('服務已啓動',NIIF_INFO);
        Shell_NotifyIcon(NIM_MODIFY,@FsysIcon);

最後用完刪除code

  

Shell_NotifyIcon(NIM_DELETE,@FsysIcon);

其中 FsysIcon是TNotifyIconData類型.blog

相關文章
相關標籤/搜索