MFC最小化到托盘

来源:互联网 发布:java正则表达式用法 编辑:程序博客网 时间:2024/03/29 01:46

 

在VC++中,想实现将MFC最小化到系统托盘,需要调用NOTIFYICONDATA类,并注册相应的消息,以下详细讲解如何实现:

    第一步,声明一个NOTIFYICONDATA类。

    第二步,声明一个响应函数afx_msg LREUSLt OnNotifyIcon(WPARAM wParam,LPARAM IParam);用于响应鼠标操作,来恢复程序界面。

    第三步,定义消息名称以消息号,并注册消息,该步很重要!定义消息名称和消息号:#define WM_NC (WM_USER+007),007只是用于指定一个消息号,可以随便指定。注册则是在BEGIN_MESSAGE_MAP(Dlg,CDialog)和END_MESSAGE_MAP()之间添加ON_MESSAGE(WM_NC,OnNotifyIcon)。

    第四步,在OnSysCommand(UINT nID, LPARAM lParam)函数中添加如下代码:

    

    第五步,OnNotifyIcon函数添加如下代码,如下:

    

    以上函数写的很简单,因为我定义的是基于对话框的MFC,没有添加menu,所以只是实现了简单的点击托盘图标就弹出主对话框。对于右键点击托盘图标弹出小menu,然后选择操作,最好是建立工程的时候就选择基于菜单的MFC,这样会容易很多,详细的我自己还没有研究,就不乱讲了。对于上面函数中Shell_NotifyIcon(NIM_DELETE,&NotifyIcon)一句,是清除托盘图标,在这里可以没有,但在退出整个程序的时候一定要加上,不然程序退出了,托盘处还有一个图标,只有鼠标指到那里时系统才会发现是进程残留而清除,这种做法很不好!

 

原创粉丝点击