经常都会看到最小化程序后就会在任务栏的托盘中保留一个小图标,即把窗口最小化至托盘中。实现起来很简单,只要明白它使用到的结构和一个Shell函数即可完成。但是如果要制作其他的菜单,需要另外制作,今天暂且不讨论。

首先来看一下这个托盘的结构,定义如下所示。

 1 typedef struct _NOTIFYICONDATAW {
 2     DWORD cbSize;//一般为sizeof(NOTIFYICONDATA);
 3     HWND hWnd;//this->m_hWnd;或theApp.m_pMainWnd->m_hWnd;
 4     UINT uID;//一般为1,此处ID和前一个hWnd共同来识别窗口;
 5     UINT uFlags;//NIF_ICON|NIF_MESSAGE;
 6     UINT uCallbackMessage;//自定义消息(#define WM_TRAY_MESSAGE (WM_USER + 1)),此处的WM_TRAY_MESSAGE
 7     HICON hIcon;
 8 #if (NTDDI_VERSION < NTDDI_WIN2K)
 9     WCHAR  szTip[64];
10 #endif
11 #if (NTDDI_VERSION >= NTDDI_WIN2K)
12     WCHAR  szTip[128];
13     DWORD dwState;
14     DWORD dwStateMask;
15     WCHAR  szInfo[256];
16     union {
17         UINT  uTimeout;
18         UINT  uVersion;  // used with NIM_SETVERSION, values 0, 3 and 4
19     } DUMMYUNIONNAME;
20     WCHAR  szInfoTitle[64];
21     DWORD dwInfoFlags;
22 #endif
23 #if (NTDDI_VERSION >= NTDDI_WINXP)
24     GUID guidItem;
25 #endif
26 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
27     HICON hBalloonIcon;
28 #endif
29 } NOTIFYICONDATAW, *PNOTIFYICONDATAW;

以上结构作为参数被Shell函数BOOL Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA pnid );调用。而其中的dwMessage有三个可选参数:NIM_ADD、NIM_DELETE和NIM_MODIFY功能分别是添加、删除以及修改托盘中的图标.当然最后要把窗口给隐藏起来啦:

1 //此处也可在其他地方调用。
2 theApp.m_pMainWnd->ShowWindow(SW_MINIMIZE);
3 //this->ShowWindow(SW_MINIMIZE);
4 theApp.m_pMainWnd->ShowWindow(SW_HIDE);
5 //this->ShowWindow(SW_HIDE);

将上述代码整理后,只要将Sheel_NotifyIcon的调用放到min按钮的事件中执行即可。

本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2007/11/15/vc_notifyicon.html,如需转载请自行联系原作者

[VC++]最小化图标至托盘中相关推荐

  1. 实现 VC 最小化到 托盘

    大家经常看到 程序 最小化到 托盘 但用C怎么实现呢 本人 试下哈 可以实现的 ~·~ main.cpp 修改如下 #define WM_CLICKBIT (WM_USER + 1) //定义消息 H ...

  2. 将Windows Live Mail最小化到Windows 7中的系统托盘

    Are you frustrated that you can not minimize Windows Live Mail to the system tray in Windows 7? With ...

  3. 将VMware工作站最小化至托盘栏

    文章目录 前言 实操验证(可用) 1. 下载[Trayconizer](http://www.whitsoftdev.com/trayconizer/)软件(访问等待建议换个网络) 2. 解压tray ...

  4. linux桌面图标恢复,恢复Linux桌面下方面板上显示最小化的图标的方法

    经常在Linux系统下进行各种操作,偶尔不小心点错了,想要还原回来却不知道怎么办?即影响办公效率,也影响心情.今天,笔者遇到意外情况,系统不知道出现了什么问题,卡住了,然后弹出一个对话框,笔者也没有注 ...

  5. linux还原桌面面板,恢复Linux桌面下方面板上显示最小化的图标的方法

    经常在Linux系统下进行各种操作,偶尔不小心点错了,想要还原回来却不知道怎么办?即影响办公效率,也影响心情.今天,笔者遇到意外情况,系统不知道出现了什么问题,卡住了,然后弹出一个对话框,笔者也没有注 ...

  6. C# 系统应用之窗体最小化至任务栏及常用操作

    现在很多软件如360杀毒软件.酷狗音乐都拥有最小化至任务栏并在系统托盘区留下图标,我的项目同样需要该功能.所以本文主要叙述如何使用C#让窗体最小化至任务栏,同时在系统托盘区的图标点击左键能显示窗体,右 ...

  7. 转 点击关闭时最小化到任务栏

    来源:http://www.2cto.com/kf/201401/274489.html 现在很多软件如360杀毒软件.酷狗音乐都拥有最小化至任务栏并在系统托盘区留下图标,我的项目同样需要该功能.所以 ...

  8. Python基础:第019课——窗口缩放事件、最小化状态及处理

    视频 观看视频 参考: pygame事件完整解析 pygame中display模块介绍 创建主窗口及绘制图像 Pygame 使用pygame.display.set_mode创建游戏的主窗口: scr ...

  9. VC++中把一个对话框最小化到托盘

    转自:http://zhidao.baidu.com/question/39126833.html 一.托盘简介 所谓的"托盘",在Windows系统界面中,指的就是下面任务条右侧 ...

最新文章

  1. vue - check-versions.js for child_process
  2. jrebel热部署不起作用_5种SpringBoot热部署方式,你用哪种?
  3. 生产者跟消费者问题(C++实现)
  4. Android的系统服务一览
  5. 孵化业务快速落地与优化
  6. 为iPhone 12上市做准备,台积电月底前投产A14 Bionic芯片
  7. 斐波那契数列(复习)
  8. 【无标题】快宝电子面单接口
  9. 有赞搜索系统的架构演进
  10. 2020年7月杭州更换异地驾照
  11. SpringBoot面试题一网打尽
  12. 清明时节雨纷纷,心思却剪不断,理还乱
  13. solaris9 x86安装oicq过程,sparc也行
  14. java吸血鬼数字_吸血鬼数字(java)
  15. iOS应用跳转(包括iPhone原有应用跳转和第三方应用跳转)
  16. vue 3.0学习1
  17. 【概念辨析】二维数组传参的几种可能性
  18. 第九届大唐杯直播整理
  19. 【干货】营销拓客思维导图24式.pdf(附下载链接)
  20. 小公司技术管理者的点滴--学习型组织

热门文章

  1. 破解缝隙之谜[转载自 http://learning.artech.cn/]
  2. (转)petshop4.0中的Profile理解(匿名用户身份)
  3. 【PostgreSQL】PostgreSQL安装步骤
  4. 【Linux】关于Linux操作系统的基本操作
  5. aws ping 不通的解决办法
  6. JMETER目录结构详解
  7. JUnit5 测试套件示例
  8. spring boot target文件夹_Boot之Boot Shell
  9. 从月薪3000到月薪30000,web前端应该怎么学?
  10. python批量读取csv并入库pg_如何通读CSV然后在Python中发布批量API调用