这是一个基于纯 Win32 API 封装的 C++ 托盘服务最小可运行示例。代码结构清晰,包含了托盘图标的创建、右键菜单的弹出、事件响应以及程序退出时的资源清理。1. 核心 C++ 代码#include windows.h #include shellapi.h // 自定义消息 ID,用于接收托盘事件 #define WM_TRAYICON (WM_USER + 1) // 菜单项 ID #define IDM_SHOW_MSG 1001 #define IDM_EXIT 1002 // 全局变量 NOTIFYICONDATA nid; HINSTANCE hInst; // 窗口过程声明 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // 初始化托盘图标 void InitTrayIcon(HWND hWnd) { ZeroMemory(nid, sizeof(nid)); nid.cbSize = sizeof(NOTIFYICONDATA); nid.hWnd = hWnd; nid.uID = 1; nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; nid.uCallbackMessage = WM_TRAYICON; nid.hIcon = LoadIcon(NULL, IDI_APPLICATION); lstrcpy(nid.szTip, TEXT("我的托盘服务")); Shell_NotifyIcon(NIM_ADD, nid); } // 销毁托盘图标 void DestroyTrayIcon() { Shell_NotifyIcon(NIM_DELETE, nid); } // 显示右键菜单 void ShowContextMenu(HWND hWnd) { POINT pt; GetCursorPos(pt); HMENU hMenu = CreatePopupMenu()