如何使用NotifyIconData在Windows系统中显示自定义托盘图标?

作者:合肥淘贝游戏开发公司 阅读:97 次 发布时间:2023-06-06 06:01:11

摘要:作为Microsoft Windows系统中的一项重要功能,托盘常常被程序开发者用于展示程序运行情况、提供一些常用功能等。在Windows系统中,托盘图标使用的是NotifyIconData结构体。本文将会介绍如何使用NotifyIconData在Windows系统中显示自定义托盘图标。1.获取托盘图标的句柄在初始...

作为Microsoft Windows系统中的一项重要功能,托盘常常被程序开发者用于展示程序运行情况、提供一些常用功能等。在Windows系统中,托盘图标使用的是NotifyIconData结构体。本文将会介绍如何使用NotifyIconData在Windows系统中显示自定义托盘图标。

如何使用NotifyIconData在Windows系统中显示自定义托盘图标?

1.获取托盘图标的句柄

在初始化托盘图标前,需要先获取托盘图标的句柄。句柄可以用来检索托盘图标并与之交互。获取方法如下所示:

```c++

HWND trayHwnd = FindWindow(_T("Shell_TrayWnd"), NULL);

HWND trayNotify = FindWindowEx(trayHwnd, NULL, _T("TrayNotifyWnd"), NULL);

HWND trayItem = FindWindowEx(trayNotify, NULL, _T("SysPager"), NULL);

trayItem = FindWindowEx(trayItem, NULL, _T("ToolbarWindow32"), NULL);

```

2.初始化NotifyIconData

NotifyIconData是一个结构体,可以用来设置托盘图标的属性。初始化NotifyIconData结构体时,需要设定一些基础属性,包括版本号、句柄、消息等。具体示例代码如下:

```c++

NOTIFYICONDATA nid;

nid.cbSize = sizeof(NOTIFYICONDATA);

nid.hWnd = hwnd;

nid.uID = ID_TRAY_ICON;

nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;

nid.uCallbackMessage = WM_TRAY_ICON;

nid.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TRAY_ICON));

```

其中,cbSize字段需要设置为结构体的大小,hWnd字段是托盘图标所在窗口的句柄,uID字段是托盘图标的ID,uFlags字段是一个标志位,它用来指定NotifyIconData结构体中哪些字段包含有效数据,uCallBackMessage字段是用来接收托盘图标相关消息的窗口消息ID。

3.显示托盘图标

显示托盘图标的方法非常简单。只需要在初始化NotifyIconData之后,使用Shell_NotifyIcon函数即可。具体代码如下:

```c++

Shell_NotifyIcon(NIM_ADD, &nid);

```

4.显示/更改托盘图标的提示信息

除了显示托盘图标外,还可以设置托盘图标的提示信息。提示信息就是当鼠标移动到托盘图标上时显示的文本。这可以通过设置NotifyIconData结构体的szTip字段来实现。具体代码如下:

```c++

_tcscpy_s(nid.szTip, MAX_TIP_LENGTH, _T("这是一个自定义的托盘图标。"));

Shell_NotifyIcon(NIM_MODIFY, &nid);

```

5.更改托盘图标

在运行中,可能需要更改托盘图标,比如在不同状态下显示不同的图标。更改托盘图标也很简单。只需要使用Shell_NotifyIcon函数,设置uFlags的NIF_ICON标志位,并设置hIcon字段为新的图标即可。具体代码如下:

```c++

// 修改托盘图标为ERR_ICON

nid.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(ERR_ICON));

Shell_NotifyIcon(NIM_MODIFY, &nid);

```

6.删除托盘图标

最后,程序退出时需要删除托盘图标,否则会造成托盘图标一直存在的问题。删除托盘图标只需要使用Shell_NotifyIcon函数,并设置uFlags的NIM_DELETE标志位即可。具体代码如下:

```c++

Shell_NotifyIcon(NIM_DELETE, &nid);

```

总结

使用NotifyIconData显示自定义托盘图标非常简单。只需要完成下列步骤即可实现:

1.获取托盘图标句柄。

2.初始化NotifyIconData,并设置图标、提示信息等属性。

3.使用Shell_NotifyIcon函数显示托盘图标。

4.使用Shell_NotifyIcon函数更改/删除托盘图标。

通过这些方法,我们可以轻松地创建自己的托盘图标,并进行展示和交互。

  • 原标题:如何使用NotifyIconData在Windows系统中显示自定义托盘图标?

  • 本文链接:https://qipaikaifa1.com/tb/9492.html

  • 本文由合肥淘贝游戏开发公司小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与淘贝科技联系删除。
  • 微信二维码

    CTAPP999

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员


    点击这里给我发消息电话客服专员


    在线咨询

    免费通话


    24h咨询☎️:189-2934-0276


    🔺🔺 棋牌游戏开发24H咨询电话 🔺🔺

    免费通话
    返回顶部