天天看点

C++如何实现程序到托盘



                                                                                             C++如何实现程序到托盘

我是win32窗口项目

用到头文件#include"shellapi.h"

#define WM_NOTIFYICON WM_USER + 0x01//宏定义自定义消息处理

在创建窗口的hWnd = CreateWindow(szWindowClass, szTitle, WS_SYSMENU,

  1300, 610, 300, 250, NULL, NULL, hInstance, NULL);函数后面

放如下代码:

NOTIFYICONDATA nid = { 0 };//初始化托盘对象

 nid.cbSize = sizeof(NOTIFYICONDATA);//结构体长度

 nid.hWnd = hWnd;//窗口句柄

 nid.uID = IDI_SMALL;//图标

 nid.hIcon = ::LoadIcon(hInst, MAKEINTRESOURCE(IDI_SMALL));//加载图标

 nid.uCallbackMessage = WM_NOTIFYICON;//消息处理,这里很重要,处理鼠标点击

 nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;

 _tcscpy(nid.szTip, _T("托盘响应"));

 Shell_NotifyIcon(NIM_ADD, &nid);

然后;

在WndProc()消息处理函数里switch下面加如下代码

case WM_NOTIFYICON://这是我们的宏定义

  if ((wParam == IDI_SMALL) && (lParam == WM_LBUTTONDOWN)) // 鼠标左键按下时响应

  {

   ShowWindow(hWnd, 10);//当点击鼠标的时候显示窗口

  }

  break;

最后在消息处理函数的case WM_DESTROY:下面去释放对象和图标

 NOTIFYICONDATA nid;

 nid.cbSize = sizeof(NOTIFYICONDATA);

 nid.hIcon = LoadIcon(hInstanceS, MAKEINTRESOURCE(IDI_ICON1));

 nid.hWnd = hWnd;

 nid.uCallbackMessage = WM_NC;

 nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;

 nid.uID = IDC_NC;

 Shell_NotifyIcon(NIM_DELETE, &nid);

c++

继续阅读