例子参考资料:
mfc添加托盘图标
https://blog.csdn.net/lwy572039941/article/details/106362967
MFC窗口程序启动时最小化到托盘、不在任务栏中显示、显示时在右小角
https://blog.csdn.net/qq_36759433/article/details/103664822?utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-2.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-2.nonecase
[每日一学]MFC学习笔记——自定义消息的使用
https://blog.csdn.net/kingsollyu/article/details/8281654
详细操作步骤如下
选择基于对话框的MFC项目
进来后如下
下面代码加载图片
尽量后如下
更改图片的名字
找到OnInitDialog()初始化函数里写代码
//在初始化里写更改对话框图标
HICON hIcon = AfxGetApp()->LoadIcon(IDI_MY_SMALL_ICON);
SetIcon(hIcon, FALSE);
//在OnInitDialog方法中调用
NOTIFYICONDATA data;
data.cbSize = sizeof(NOTIFYICONDATA);//结构体的大小
data.hWnd = this->m_hWnd;//接收托盘消息的窗口句柄 this是当前dialog
data.uID = IDI_MY_SMALL_ICON;//定义的托盘图标ID
data.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;//设置属性,下面的三个属性是否有效
lstrcpyn(data.szTip, _T("单击右键显示菜单"), sizeof(_T("单击右键显示菜单")));//图标上的提示字符串
data.uCallbackMessage = WM_ONTRAY;//自定义的消息,
data.hIcon = ::LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_MY_SMALL_ICON));//显示在系统托盘上的图标
Shell_NotifyIcon(NIM_ADD, &data);// 向任务栏的状态栏发送添加托盘图标的消息
编译项目,这个时候可能会编译不过,报错问题如下
解决方法
在头文件里加上这一句
#define WM_ONTRAY WM_USER+0x001
在编译就通过了
添加资源
为菜单栏添加内容
在dialog头文件中定义菜单变量
CMenu menu;
在OnInitDialog()中为菜单变量加载菜单
//响应事件方法实现 UINT uMouseMsg = (UINT)lParam; if (uMouseMsg == WM_RBUTTONDOWN) { CMenu* pPopup = menu.GetSubMenu(0); CPoint point; GetCursorPos(&point); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_VERTICAL, point.x, point.y, AfxGetApp()->m_pMainWnd, TPM_LEFTALIGN); } if (uMouseMsg == WM_LBUTTONDBLCLK) { //双击鼠标 ShowWindow(SW_SHOWNOACTIVATE); //恢复窗口的显示 }
添加代码
//给窗口发送消息还原成原来大小 SendMessage(WM_SYSCOMMAND, SC_RESTORE, 0);
给退出按钮也加一下
//给窗口发送消息关闭 SendMessage(WM_CLOSE, 0, 0);
找到OnSysCommand函数,添加如下代码
if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else if (nID == SC_MINIMIZE)//最小化,把他隐藏起来 { this->ShowWindow(SW_HIDE); } else if (nID == SC_CLOSE)//最小化,把他隐藏起来 { this->ShowWindow(SW_HIDE); } else { CDialogEx::OnSysCommand(nID, lParam); }
到这个程序就写完了
演示如下
程序员阿飞
2021年4月20日
原文:https://www.cnblogs.com/nxopen2018/p/14683297.html