最小化托盘的实现方法
2017-05-15 12:41
204 查看
在书上看到的,认为实用,记下了。
首先,最小化托盘的基本原理是,将应用程序的主窗口隐藏,然后在托盘中绘制应用程序的图标。然后再为托盘图标加入一些事件处理。
核心函数是Shell_NotifyIcon()函数,负责向系统传递消息,加入、改动或删除托盘区的图标。原型:
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(
DWORD dwMessage,
PNOTIFYCONDATA pnid
);
当中dwMessage标示功能,有NIM_ADD/NIM_DELETE/NIM_MODIFY。
pnid是程序最小化到托盘的图标信息结构体:
typedef struct _NOTIFYCONDATA {
DOWRD cbSize;
//结构的长度
HWND hWnd;
UINT uID;
//图标ID
UINT uFlags;
//标志着其它哪些成员数据的有效性?
UINT uCallbackMessage;
//当用户单击托盘区图标时会向窗体发送消息
HICON hIcon;
//图标句柄
char szTip[64];
//鼠标移动到托盘图标上时显示的文字
} NOTIFYICONDATA, *PNOTIFYICONDATA;
相关代码:
...
NOTIFYICONDATA nid;
nid.cbSize = (DWORD) sizeof (NOTIFYICONDATA);
nid.hWnd = this->m_hWnd;
nid.uID = IDR_MAINFRAME;
nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
//这句我不理解?
nid.uCallbackMessage = WM_CALL;
nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip,"MyApp");
Shell_NotifyIcon(NIM_ADD,&nid);
ShowWindow(SW_HIDE); //隐藏主窗体
...
接着自己定义消息WM_CALL,方法有一篇文章有讲到。
这里要注意规定了回调消息wParam接收图标ID。lParam接收鼠标的行为。
另外,当程序所有关闭时,也应该删除掉托盘。代码差点儿相同,不反复了。
首先,最小化托盘的基本原理是,将应用程序的主窗口隐藏,然后在托盘中绘制应用程序的图标。然后再为托盘图标加入一些事件处理。
核心函数是Shell_NotifyIcon()函数,负责向系统传递消息,加入、改动或删除托盘区的图标。原型:
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(
DWORD dwMessage,
PNOTIFYCONDATA pnid
);
当中dwMessage标示功能,有NIM_ADD/NIM_DELETE/NIM_MODIFY。
pnid是程序最小化到托盘的图标信息结构体:
typedef struct _NOTIFYCONDATA {
DOWRD cbSize;
//结构的长度
HWND hWnd;
UINT uID;
//图标ID
UINT uFlags;
//标志着其它哪些成员数据的有效性?
UINT uCallbackMessage;
//当用户单击托盘区图标时会向窗体发送消息
HICON hIcon;
//图标句柄
char szTip[64];
//鼠标移动到托盘图标上时显示的文字
} NOTIFYICONDATA, *PNOTIFYICONDATA;
相关代码:
...
NOTIFYICONDATA nid;
nid.cbSize = (DWORD) sizeof (NOTIFYICONDATA);
nid.hWnd = this->m_hWnd;
nid.uID = IDR_MAINFRAME;
nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
//这句我不理解?
nid.uCallbackMessage = WM_CALL;
nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip,"MyApp");
Shell_NotifyIcon(NIM_ADD,&nid);
ShowWindow(SW_HIDE); //隐藏主窗体
...
接着自己定义消息WM_CALL,方法有一篇文章有讲到。
这里要注意规定了回调消息wParam接收图标ID。lParam接收鼠标的行为。
另外,当程序所有关闭时,也应该删除掉托盘。代码差点儿相同,不反复了。
相关文章推荐
- WinForm实现最小化到系统托盘方法实例详解
- WinForm最小化到系统托盘后,再次激活需要验证的实现方法
- WinForm实现最小化到系统托盘方法实例详解
- wxpython 最小化到托盘与欢迎图片的实现方法
- wxpython 最小化到托盘与欢迎图片的实现方法
- VB最小化到通知栏,托盘 的方法 WinAPI实现
- 最小化托盘的实现方法
- 实现启动最小化到系统托盘
- C#窗体的最大化/最小化/还原/最小化到托盘/NotifyIcon的代码实现
- VC实现最小化后在系统托盘显示
- VC实现将程序最小化到托盘
- 将Outlook最小化到系统托盘的方法:
- C#实现窗口最小化到系统托盘
- Winform窗体实现最小化托盘图标
- C#窗体的最大化/最小化/还原/最小化到托盘/NotifyIcon的代码实现
- outlook最小化到托盘的设置方法
- VC中如何实现最小化到托盘以及恢复
- vc中程序最小化到托盘(任务拦)的实现
- VC6.0 中如何实现最小化到托盘以及恢复?
- C#实现系统托盘,C#窗体最小化时隐藏为任务栏图标