制作任务栏托盘菜单
来源:互联网 发布:word转jpg软件 编辑:程序博客网 时间:2024/06/08 04:41
1)准备一个菜单资源,并导入一个图标资源(用作任务栏上显示的图标)
2)在你的程序中添加两个变量,一个是CMenu对象m_Menu,一个是NOTIFYICONDATA结构体对象m_NotifyData,这个结构体作用是"包含系统需要的用来传递托盘区域消息的信息",具体请查询MSDN
3)自定义一个消息,在窗口最小化时向任务栏注册该消息,以便在左单击任务栏上的图标时能够恢复显示对话框或右键显示菜单.
#define WM_TRAYMESSAGE WM_USER + 1
4)在对话框初始化时加载菜单资源,并初始化m_NotifyData结构体对象.
具体代码如下:
m_TrayMenu.LoadMenu(IDR_MENU); //加载菜单资源
//初始化m_NotifyData
m_NotifyData.cbSize = sizeof(NOTIFYICONDATA);
m_NotifyData.hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
m_NotifyData.hWnd = m_hWnd;
char szTrayText[11] = "系统管理";
strncpy(m_NotifyData.szTip,szTrayText,strlen(szTrayText) + 1);
m_NotifyData.uCallbackMessage = WM_TRAYMESSAGE;
m_NotifyData.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
5)在对话框的OnSysCommand函数中截获窗口最小化的消息,调用Shell_NotifyIcon外壳函数向任务栏注册托盘信息
Shell_NotifyIcon函数作用是向任务栏区域发送一个增加,改变,或删除图标的消息
Shell_NotifyIcon(NIM_ADD,&m_NotifyData); //注册任务栏信息,将消息WM_TRAYMESSAGE与图标关联起来
6)添加消息WM_TRAYMESSAGE处理函数OnTrayMenu(WPARAM wParam,LPARAM lParam);(注意手动添加消息映射时,响应函数返回值是LRESULT而不是void,在VS2008上若为void会报错)
代码如下:
LRESULT CTrayMenuDlg::OnTrayMessage(WPARAM wParam, LPARAM lParam)
{
if(lParam == WM_LBUTTONDOWN)
{
ShowWindow(SW_RESTORE); //还原显示窗口
}
else if(lParam == WM_RBUTTONDOWN)
{
CPoint curPT;
::GetCursorPos(&curPT);
CMenu* pSubMenu = m_TrayMenu.GetSubMenu(0); //获取子菜单
pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,curPT.x,
curPT.y,AfxGetApp()->m_pMainWnd,TPM_LEFTALIGN); //弹出菜单
}
return 1;
}
添加消息映射宏
ON_MESSAGE(WM_TRAYMESSAGE,OnTrayMessage)
7)最后添加OnCancel()函数,在对话框关闭时删除任务栏中的托盘图标
代码如下:
Shell_NotifyIcon(NIM_DELETE,&m_NotifyData); //删除托盘菜单
CDialog::OnCancel();
- 制作任务栏托盘菜单
- 实例004 任务栏托盘菜单
- 007 任务栏托盘弹出菜单
- 制作任务栏托盘程序(C#)
- Qt任务栏,托盘栏,托盘菜单,图标等操作
- 任务栏托盘
- VC++任务栏托盘图标及右键菜单实现
- Qt学习九:控件六:任务栏托盘菜单
- 关于任务栏/任务栏托盘编程
- delphi任务栏托盘写法
- VC实现任务栏托盘
- VC++实现任务栏托盘
- C#实现窗口贴边自动隐藏、任务栏隐藏至托盘并添加双击和右键菜单
- FLEX提高篇--------AIR应用程序的托盘及托盘菜单的制作
- java语言 托盘控制 任务栏
- 定制任务栏托盘的dll
- 隐藏任务栏的开始菜单、托盘
- vc添加任务栏托盘图标
- JavaScript学习笔记(四十三) 迭代器
- poj 1269 Intersecting Lines (判断两条直线的状态)
- CGAffineTransform 放射变换
- 智能指针std::auto_ptr
- 美女壁纸
- 制作任务栏托盘菜单
- IT界三大定律:摩尔定律、反摩尔定律、安迪-比尔定律
- 【心路】女攻城师走在移动互联网道路的这两年
- 07.net网站开发(前端):4.MVC HtmlHelper
- xml Node getNodeValue 和 getTextContent 区别
- C++中get函数和getline函数
- 数据结构与程序设计第一章编程原则总结
- 短训学习录(九)——结业了
- C# richtextbox里的string字符串以换行作为Split的参数分隔符