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

本文介绍了如何在程序中实现托盘图标的功能,包括定义NOTIFYICONDATAW结构体及调用Shell_NotifyIcon函数的方法,并给出了具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值