自己动手写类似酷狗播放器(4)_系统托盘的显示
来源:互联网 发布:中国银行软件开发中心 编辑:程序博客网 时间:2024/06/05 15:35
任何一个应用程序,在开启后都会在任务栏的又下角显示一个图标,用来表示这个应用程序已经开启,比如QQ.那是如何做到 的呢?其实也是很简单,就是填充NOTIFYICONDATA结构体,这时候就需要对该结构体有个了解了,查找MSDN手册如下:
步骤:
1.填充NOTIFYICONDATA结构体
消息处理:当系统托盘图标发生鼠标事件时候,会给windows发送一个ucallbackmessage事件,去到指定窗口函数中响应。
wParam:这时指的是 UID字段的值
lparam : 此时附带的鼠标动作 比如鼠标左键按下,右键按下,双击等等。比如,当鼠标在托盘图标移动的时候,lParam参数就发送WM_MOUSEMOVE事件。
2调用shell_notifyIcon 函数来增加或者删除图标
BOOL Shell_NotifyIcon( DWORD dwMessage, //参数1:消息的种类 NIM_ADD/DELETE/MOTIFY 图标的添加,删除和更改 PNOTIFYICONDATA pnid //参数2: NOTIFYICONdata结构体的指针);
以上两个步骤就可以显示一个系统托盘,但是这是没用的,因为并不会响应任何操作,所以我们接下来要做的就是加入消息处理3.添加触发事件
目的:当点击系统图标左键显示主对话框,右键弹出菜单项
当鼠标在托盘区域发生动作时候,就会产生NOTIFYICONDATA第五个参数的事件,我们这里是用自定义的事件#define WM_TRAYMSG WM_USER+1 //自定义事件也就是说当托盘区域的鼠标动作时,触发该事件,在这个事件下,来处理左键和右键。case WM_TRAYMSG: //响应自定义托盘事件{if(wParam==1) //先判断是否是在图标区域发生 1就是NOTIFYICONDATA 中UID 的数值{switch(lParam){case WM_LBUTTONDOWN: //鼠标左键按下 显示主界面{ShowWindow(hDlg_main,SW_SHOWNORMAL);//正常显示主界面//SetForegroundWindow(hDlg_main); return 0;}case WM_RBUTTONDOWN: //右键加载菜单项{POINT point;GetCursorPos(&point); //获取鼠标点击的位置HMENU hpopupmenu=CreatePopupMenu(); //创建弹出菜单HMENU hmenu_playmode=GetSubMenu(GetSubMenu(hmenu,0),2); //获取控制条目子菜单句柄AppendMenu(hpopupmenu,MF_STRING,IDM_PAUSEORSTART,TEXT("暂停/继续"));AppendMenu(hpopupmenu,MF_SEPARATOR,NULL,NULL); //添加下划线AppendMenu(hpopupmenu,MF_POPUP,(UINT)hmenu_playmode,TEXT("播放模式"));AppendMenu(hpopupmenu,MF_SEPARATOR,NULL,NULL); //添加下划线AppendMenu(hpopupmenu,MF_STRING,IDM_QUIT,TEXT("退出"));SetForegroundWindow(hDlg_main);//必须要设置所在的窗口为前台 TrackPopupMenu(hpopupmenu,TPM_RIGHTBUTTON,point.x,point.y,0,hDlg_main,NULL); //显示菜单项return 0;}}}break;}
注意在上面的右键操作中处理,在菜单弹出前,必须将该菜单所在的窗口设置为前台窗口,不然这个菜单只能显示,当点击任意其他地方都是消失的。
- 自己动手写类似酷狗播放器(4)_系统托盘的显示
- 自己动手写类似酷狗播放器(4)_鼠标右键菜单的添加
- 自己动手写类似酷狗播放器(5)_文件的保存和读取
- 自己动手写类似酷狗播放器(2)_音乐播放模块实现
- 自己动手写类似酷狗播放器(1)_创建一个基于对话框模板
- 自己动手写类似酷狗播放器(6)_UI初步改善_添加背景色
- 自己动手写类似酷狗播放器(3)_Slider控件使用
- 自己动手写一个播放器mciSendString();
- 自己动手开发音乐播放器《五》播放功能的实现
- 自己动手开发音乐播放器《六》播放方式的实现
- 自己动手写OpenStack的QoS功能(4)
- 类似播放器的jQuery图片切换
- Java编写类似Flash的播放器
- C#_音乐播放器_用ListBox显示歌词
- 自己动手编译播放器MPC-HC的源码
- 自己动手开发音乐播放器(一)主界面的搭建
- 自己动手开发音乐播放器(二)附加界面的搭建
- 自己动手开发音乐播放器《八》迷你界面的实现
- 【diannaoxitong】TP-LINK无线路由器设置:防蹭网加密方法
- [Virtual Judge]ZOJ1610:Count the Colors
- 关于Ubuntu 12.04 修改默认运行级别,启动字符界面的个人理解
- 大数的运算
- 广播,组播和多播的区别
- 自己动手写类似酷狗播放器(4)_系统托盘的显示
- uva 502 DEL command(字符串处理)
- javascript 数据类型转换
- 负载均衡实战记录
- 源码研读-mina多线程模型
- (Ext基础篇) Ext核心组件
- [Cocoa]多线程 NSThread
- [leetcode] Jump Game
- linux mmap 详解