[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月前
|
C++ UED 开发者
逆向学习 MFC 篇:视图分割和在 C++ 的 Windows 窗口程序中添加图标的方法
逆向学习 MFC 篇:视图分割和在 C++ 的 Windows 窗口程序中添加图标的方法
87 0
|
Windows 存储 Cloud Native
C++Qt windows系统托盘增加图标和功能
C++Qt windows系统托盘增加图标和功能
|
Unix 区块链 Android开发
VC++工具栏图标合并工具推荐:Axialis IconWorkshop
VC++工具栏图标合并工具推荐:Axialis IconWorkshop
240 0
VC++工具栏图标合并工具推荐:Axialis IconWorkshop
|
C++ Windows
C++根据扩展名获取文件图标、类型
简述 在Windows系统中,根据扩展名来区分文件类型,比如:.txt(文本文件)、.exe(可执行程序)、*.zip(压缩文件),下面,我们来根据扩展名来获取对应的文件图标、类型。 简述 源码 源码 如下,我们根据扩展名来获取对应的文件图标、类型。 #include &lt;windows.h&gt; #include &lt;iostream&gt;
1662 0
|
21天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
30 2
|
27天前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
70 5
|
1月前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
72 4
|
1月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
82 4
|
2月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
31 4
|
2月前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
26 4