vc 系统托盘的实现

vc 系统托盘的实现

ID:37898240

大小:52.00 KB

页数:4页

时间:2019-06-02

vc 系统托盘的实现_第1页
vc 系统托盘的实现_第2页
vc 系统托盘的实现_第3页
vc 系统托盘的实现_第4页
资源描述:

《vc 系统托盘的实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Mfc实现系统托盘菜单功能2011年11月12日giigie发表评论阅读评论Mfc实现系统托盘菜单功能第一步,声明一个NOTIFYICONDATA类,也就是NOTIFYICONDATANotifyIcon;该句可以放在Dlg类的声明中,作为Dlg类的一个成员;也可以放在Dlg类的实现中,作为全局变量来使用。第二步,声明一个响应函数afx_msgvoidOnNotifyIcon(WPARAMwParam,LPARAMIParam);用于响应鼠标操作。将这个函数放入Dlg类的声明中,作为Dlg类的一个成员。第三步,定义消息名称以消息号,并注册消息,该步很重要!我就是因为没有注

2、册消息,导致调试了很久都找不到问题所在。该步都是在Dlg.cpp(Dlg的实现中)中操作。定义消息名称和消息号:#defineWM_NC(WM_USER+1001),1001只是用于指定一个消息号,可以随便指定。注册则是在BEGIN_MESSAGE_MAP(Dlg,CDialog)和END_MESSAGE_MAP()之间添加ON_MESSAGE(WM_NC,OnNotifyIcon)。第四步,在要将MFC最小化到系统托盘的函数中添加如下代码: NotifyIcon.cbSize=sizeof(NOTIFYICONDATA);   NotifyIcon.hIcon=AfxG

3、etApp()->LoadIcon(IDR_MAINFRAME);   NotifyIcon.hWnd=m_hWnd;   lstrcpy(NotifyIcon.szTip,"NotifyIconTest");   NotifyIcon.uCallbackMessage=WM_NC;   NotifyIcon.uFlags=NIF_ICON

4、NIF_MESSAGE

5、NIF_TIP;   Shell_NotifyIcon(NIM_ADD,&NotifyIcon);有了上面的代码,当程序运行到含有如上代码的函数时就会在系统托盘处添加一个图标,想隐藏主对话框,就再添加一句Sho

6、wWindow(SW_HIDE);这样就实现了将MFC最小化到系统托盘。但还要添加点击托盘图标时响应鼠标的函数,也就是第二步中的函数OnNotifyIcon。第五步,OnNotifyIcon函数,如下:   voidCDlg::OnNotifyIcon(WPARAMwParam,LPARAMIParam)   {        if((IParam==WM_LBUTTONDOWN)

7、

8、(IParam==WM_RBUTTONDOWN))        {              ModifyStyleEx(0,WS_EX_TOPMOST);             Sho

9、wWindow(SW_SHOW);             //Shell_NotifyIcon(NIM_DELETE,&NotifyIcon);        }   }以上函数写的很简单,因为我定义的是基于对话框的MFC,没有添加menu,所以只是实现了简单的点击托盘图标就弹出主对话框。对于右键点击托盘图标弹出小menu,然后选择操作,最好是建立工程的时候就选择基于菜单的MFC,这样会容易很多,详细的我自己还没有研究,就不乱讲了。对于上面函数中Shell_NotifyIcon(NIM_DELETE,&NotifyIcon)一句,是清除托盘图标,在这里可以没有,但在退出

10、整个程序的时候一定要加上,不然程序退出了,托盘处还有一个图标,只有鼠标指到那里时系统才会发现是进程残留而清除,这种做法很不好!//显示托盘SelecAllCode:1234567891011121314151617 voidCMfcDlg::OnOK(){//TODO:Addextravalidationhere NotifyIcon.cbSize=sizeof(NOTIFYICONDATA);NotifyIcon.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);NotifyIcon.hWnd=m_hWnd;lstrcpy(Notif

11、yIcon.szTip,"NotifyIconTest");NotifyIcon.uCallbackMessage=WM_NC;NotifyIcon.uFlags=NIF_ICON

12、NIF_MESSAGE

13、NIF_TIP;Shell_NotifyIcon(NIM_ADD,&NotifyIcon); ShowWindow(SW_HIDE); //CDialog::OnOK();}系统托盘的弹出式菜单SelecAllCode:12345 voidCMfcDlg::OnNotifyIcon(WPARAMwParam,LPARAMIP

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。