MFC程序隐藏托盘+右键关闭菜单
背景介绍:
我的程序是启动后,默认就隐藏到托盘中,等待http请求后,显示界面。所以最小化到托盘的代码,我是写在初始化里面。
正文:
一、自定义消息 WM_SHOWTASK
#define WM_SHOWTASK (WM_USER + 101)
二、在类向导中添加消息处理
点击【类向导】、【消息】、【自定义消息】,填写自定义的消息【WM_SHOWTASK】,点击【确定】,双击,自动生成类函数,编写代码。
三、最小化到托盘
// 编写最小化到托盘的代码,我是写在初始化函数中 NOTIFYICONDATA nid; nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); nid.hWnd = this->m_hWnd; nid.uID = IDI_MAINFRAME; // 资源,icon 图片 nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; nid.uCallbackMessage = WM_SHOWTASK; // 绑定自定义的消息 nid.hIcon = m_hIcon; lstrcpy(nid.szTip, _T("web server")); Shell_NotifyIcon(NIM_ADD, &nid);
四、处理自定义消息,给托盘程序绑定右键菜单
afx_msg LRESULT CeloamDllDemoDlg::OnShowtask(WPARAM wParam, LPARAM lParam) { switch (lParam) { case WM_RBUTTONUP: // 只处理鼠标右键点击 { LPPOINT lpoint = new tagPOINT; ::GetCursorPos(lpoint); CMenu menu; menu.CreatePopupMenu(); menu.AppendMenuW(MF_STRING, WM_DESTROY, L"关闭"); menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint->x, lpoint->y, this); HMENU hmenu = menu.Detach(); menu.DestroyMenu(); delete lpoint; }break; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具