[VC++]最小化图标至托盘中

简介:
  经常都会看到最小化程序后就会在任务栏的托盘中保留一个小图标,即把窗口最小化至托盘中。实现起来很简单,只要明白它使用到的结构和一个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_ADDNIM_DELETENIM_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,如需转载请自行联系原作者

相关文章
|
6月前
|
Windows 存储 Cloud Native
C++Qt windows系统托盘增加图标和功能
C++Qt windows系统托盘增加图标和功能
|
Unix 区块链 Android开发
VC++工具栏图标合并工具推荐:Axialis IconWorkshop
VC++工具栏图标合并工具推荐:Axialis IconWorkshop
203 0
VC++工具栏图标合并工具推荐:Axialis IconWorkshop
|
C++ Windows
C++根据扩展名获取文件图标、类型
简述 在Windows系统中,根据扩展名来区分文件类型,比如:.txt(文本文件)、.exe(可执行程序)、*.zip(压缩文件),下面,我们来根据扩展名来获取对应的文件图标、类型。 简述 源码 源码 如下,我们根据扩展名来获取对应的文件图标、类型。 #include &lt;windows.h&gt; #include &lt;iostream&gt;
1575 0
|
3天前
|
设计模式 安全 算法
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
14 0
|
4天前
|
C语言 C++
【C++】string类(常用接口)
【C++】string类(常用接口)
13 1
|
2天前
|
编译器 C++
【C++】继续学习 string类 吧
首先不得不说的是由于历史原因,string的接口多达130多个,简直冗杂… 所以学习过程中,我们只需要选取常用的,好用的来进行使用即可(有种垃圾堆里翻美食的感觉)
7 1
|
2天前
|
算法 安全 程序员
【C++】STL学习之旅——初识STL,认识string类
现在我正式开始学习STL,这让我期待好久了,一想到不用手撕链表,手搓堆栈,心里非常爽
9 0
|
2天前
|
存储 安全 测试技术
【C++】string学习 — 手搓string类项目
C++ 的 string 类是 C++ 标准库中提供的一个用于处理字符串的类。它在 C++ 的历史中扮演了重要的角色,为字符串处理提供了更加方便、高效的方法。
7 0
|
3天前
|
Java C++ Python
【C++从练气到飞升】06---重识类和对象(二)
【C++从练气到飞升】06---重识类和对象(二)
|
3天前
|
编译器 C++
【C++从练气到飞升】06---重识类和对象(一)
【C++从练气到飞升】06---重识类和对象(一)