Delphi如何轻松打造Windows长尾词气泡提示?

2026-04-10 02:261阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计465个文字,预计阅读时间需要2分钟。

Delphi如何轻松打造Windows长尾词气泡提示?

该结构体定义了shell API下的TNotifyIconData,用于窗口图标的通知功能:typedef struct _NOTIFYICONDATA { DWORD cbSize; HWND hWnd; UINT uID; };

其实也不复杂,主要使用到shellAPI下的TNotifyIconData这个结构体:

    

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;

调用

首先得添加

  

FillDataStructureandCreate(‘右击重新显示窗体‘,NIIF_INFO); Shell_NotifyIcon(NIM_ADD,@FsysIcon);

自定义提示

  

FillDataStructureandCreate(‘服务已启动‘,NIIF_INFO); Shell_NotifyIcon(NIM_MODIFY,@FsysIcon);

最后用完删除

Delphi如何轻松打造Windows长尾词气泡提示?

  

Shell_NotifyIcon(NIM_DELETE,@FsysIcon);

其中 FsysIcon是TNotifyIconData类型.

本文共计465个文字,预计阅读时间需要2分钟。

Delphi如何轻松打造Windows长尾词气泡提示?

该结构体定义了shell API下的TNotifyIconData,用于窗口图标的通知功能:typedef struct _NOTIFYICONDATA { DWORD cbSize; HWND hWnd; UINT uID; };

其实也不复杂,主要使用到shellAPI下的TNotifyIconData这个结构体:

    

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;

调用

首先得添加

  

FillDataStructureandCreate(‘右击重新显示窗体‘,NIIF_INFO); Shell_NotifyIcon(NIM_ADD,@FsysIcon);

自定义提示

  

FillDataStructureandCreate(‘服务已启动‘,NIIF_INFO); Shell_NotifyIcon(NIM_MODIFY,@FsysIcon);

最后用完删除

Delphi如何轻松打造Windows长尾词气泡提示?

  

Shell_NotifyIcon(NIM_DELETE,@FsysIcon);

其中 FsysIcon是TNotifyIconData类型.