【转载、修改、增强】MFC基于对话框程序如何最小化到托盘?
来源:互联网 发布:淘宝如何装修店铺教程 编辑:程序博客网 时间:2024/06/17 00:17
原文地址:http://jingyan.baidu.com/article/0aa22375e2089588cd0d6410.html
本文以Visual C++ 6.0为例,介绍mfc程序最小化到托盘的方法。
1、打开编程软件,新建一个基于对话框的MFC程序,命名为ShowTask,设计好程序界面:
2、右键点击程序设计界面的“ShowTask”对话框,选择“属性”。
3、切换到“样式(Style)”选项卡。
4、勾选【最小化框(N)】复选框,关闭此对话框。
5、在ShowTaskDlg.h文件中添加代码(具体位置看图):
#define WM_SHOWTASK (WM_USER + 1) //声明自定义消息WM_SHOWTASK
6、还是在ShowTaskDlg.h里,在两处分别添加代码(具体位置看图):
第1处代码:
void ToTray();//声明最小化到托盘的函数void DeleteTray();//声明从托盘还原的函数
第2处代码:
afx_msg LRESULT OnShowTask(WPARAM wParam, LPARAM lParam);//声明自定义的托盘消息
7、在ShowTaskDlg.cpp文件的消息映射处添加代码:
ON_MESSAGE(WM_SHOWTASK,OnShowTask)
8、在ShowTaskDlg.cpp文件中找到OnSysCommand函数,添加代码:
if(nID == SC_MINIMIZE)//如果用户点击了【最小化】按钮{ToTray();//最小化到托盘}
9、在ShowTaskDlg.cpp文件中的最下面添加三个函数:
void CShowTaskDlg::ToTray()//最小化到托盘函数{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_SHOWTASK;//自定义的消息名称nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));//设置图标strcpy(nid.szTip,"程序名称");//设置鼠标移动到图标上时的提示信息Shell_NotifyIcon(NIM_ADD,&nid);//放置托盘图标ShowWindow(SW_HIDE);//隐藏主窗口}
LRESULT CShowTaskDlg::OnShowTask(WPARAM wParam, LPARAM lParam)//托盘消息函数{if(wParam != IDR_MAINFRAME){return true;}switch(lParam){case WM_RBUTTONUP://右键点击图标时{LPPOINT lpPoint = new tagPOINT;::GetCursorPos(lpPoint);//获取鼠标位置到lpPointCMenu menu;menu.CreatePopupMenu();//创建菜单menu.AppendMenu(MF_STRING,WM_DESTROY,"退出");//添加菜单项“退出”menu.TrackPopupMenu(TPM_LEFTALIGN,lpPoint->x,lpPoint->y,this);//设置菜单弹出位置HMENU hmenu = menu.Detach();menu.DestroyMenu();}break;case WM_LBUTTONUP://左键点击图标时{this->ShowWindow(SW_SHOWNORMAL);//显示主窗口DeleteTray();//删除托盘图标//设置主窗口为当前活动窗口 开始this->SetActiveWindow(); this->SetForegroundWindow(); this->BringWindowToTop();//设置主窗口为当前活动窗口 结束}break;default: break;}return false;}
void CShowTaskDlg::DeleteTray()//删除托盘图标函数{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_SHOWTASK;nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));strcpy(nid.szTip,"程序名称");Shell_NotifyIcon(NIM_DELETE,&nid);//删除托盘图标}
10、编译程序,运行程序,看到效果!
阅读全文
0 0
- 【转载、修改、增强】MFC基于对话框程序如何最小化到托盘?
- MFC对话框最小化到托盘
- MFC对话框最小化到托盘
- MFC对话框最小化到托盘
- MFC对话框最小化到托盘
- MFC对话框最小化到托盘
- MFC程序最小化到托盘
- MFC最小化程序到托盘
- MFC最小化程序到托盘
- MFC程序最小化到托盘
- MFC程序最小化到托盘
- MFC程序最小化到托盘
- 将对话框程序最小化到托盘
- MFC 程序最小化到任务栏托盘
- MFC程序启动时最小化到托盘
- 最小化对话框到托盘
- MFC基于对话框最小化到托盘,并鼠标右键添加菜单以及对应菜单功能
- MFC最小化到托盘
- 关于python的整形(int)自动转长整形(long)的问题
- 大牛论坛
- zoj1871steps 数学 水
- CentOS 通过yum安装gcc 4.8, 4.9, 5.2等高版本GCC
- 关于SLAM的那些事——实时RGBD_ORB_SLAM (Ubuntu+Xtion)
- 【转载、修改、增强】MFC基于对话框程序如何最小化到托盘?
- caffe 学习笔记-prototxt文件定义与读取
- appium(java)——环境搭建
- React Native基础
- jvm_bind端口占用异常原因分析
- 表排序(基于插入排序) C~
- cocos2dx 3.4 assets问题
- OpenCV——读取、显示及保存图片
- 回调函数定义及用法