MFC隐藏任务栏图标并显示到托盘

参考链接:https://blog.csdn.net/vipzjh/article/details/52211407

在对话框头文件中定义消息ID (用于处理点击托盘图标) :

#define WM_SHOWTASK WM_USER+666

对话框头文件添加成员声明:

protected:
//start----------------------图标显示至托盘--------------------------------NOTIFYICONDATA m_nid;void ToTray();afx_msg LRESULT onShowTask(WPARAM wParam, LPARAM lParam);
//end-----------------------图标显示至托盘--------------------------------

对话框CPP添加自定义消息绑定:

BEGIN_MESSAGE_MAP(CUserDlg,CDialog)//......................ON_MESSAGE(WM_SHOWTASK,onShowTask)
END_MESSAGE_MAP()

对话框CPP文件实现ToTray:

void CLaserMarkingManagerDlg::ToTray()
{m_nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);m_nid.hWnd = this->m_hWnd;m_nid.uID = IDR_MAINFRAME;m_nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;m_nid.uCallbackMessage = WM_SHOWTASK;//自定义的消息名称 WM_SHOWTASK 头函数中定义为WM_USER+1m_nid.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));strcpy(m_nid.szTip, "托盘图标");//当鼠标放在上面时,所显示的内容Shell_NotifyIcon(NIM_ADD, &m_nid);//在托盘区添加图标
}

对话框CPP文件实现onShowTask:

LRESULT CLaserMarkingManagerDlg::onShowTask(WPARAM wParam, LPARAM lParam)
{if (wParam != IDR_MAINFRAME)return 1;switch (lParam){case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”{LPPOINT lpoint = new tagPOINT;::GetCursorPos(lpoint);//得到鼠标位置CMenu menu;menu.CreatePopupMenu();//声明一个弹出式菜单//增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口(已//隐藏),将程序结束。menu.AppendMenu(MF_STRING, WM_DESTROY, "退出");//确定弹出式菜单的位置SetForegroundWindow();menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint->x, lpoint->y, this);//资源回收HMENU hmenu = menu.Detach();menu.DestroyMenu();delete lpoint;}break;case WM_LBUTTONDBLCLK://双击左键的处理{//删除WS_EX_TOOLWINDOW风格,改为WS_EX_APPWINDOW(显示任务栏图标)   ModifyStyleEx( WS_EX_TOOLWINDOW, WS_EX_APPWINDOW);this->ShowWindow(SW_SHOWNORMAL);//简单的显示主窗口}break;}return 0;
}

OnInitDialog函数中调用ToTray():

//删除WS_EX_APPWINDOW风格,改为WS_EX_TOOLWINDOW**(隐藏任务栏图标)**
ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);
//图标显示至托盘
ToTray();
ShowWindow(SW_MINIMIZE); //初始最小化显示

为使应用程序退出时图标消失,在类向导添加WM_DESTROY消息,
在OnDestroy()函数中加入:

::Shell_NotifyIcon(NIM_DELETE,&m_nid);

(1)不使用系统的最小化按钮,自己拖按钮做隐藏功能:

void CLaserMarkingManagerDlg::OnBnClickedHide()
{//删除WS_EX_APPWINDOW风格,改为WS_EX_TOOLWINDOW(隐藏任务栏图标)  ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);WS_EX_APPWINDOWShowWindow(SW_MINIMIZE);
}

(2)或者添加消息WM_SYSCOMMAND

void C***Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{// TODO:  在此添加消息处理程序代码和/或调用默认值if (SC_MAXIMIZE == nID){...............}if (SC_MINIMIZE == nID){//删除WS_EX_APPWINDOW风格,改为WS_EX_TOOLWINDOW(隐藏任务栏图标)    ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);WS_EX_APPWINDOW}CDialogEx::OnSysCommand(nID, lParam);
}

MFC隐藏任务栏图标并显示到托盘相关推荐

  1. Unity3D之Windows端隐藏任务栏图标并添加至托盘

    目录 1 基本效果 2 代码实现 2.1 思路 2.2 实现 2.2.1 Unity程序监听最小化和关闭事件 2.2.2 方便打包的菜单栏 2.2.3 IL2CPP启动外部程序 2.2.4 winfo ...

  2. 关于MFC程序中隐藏任务栏图标的问题

    前几天有个MFC对话框程序,有个隐藏任务栏图标的功能需求,就在网上搜了搜,发现基本上都是这一句: ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);也就是 ...

  3. MFC程序隐藏任务栏图标的三种方法

    在VC编程中,有时候我们需要将我们的程序在任务栏上的显示隐藏起来,我试过几种方法,下面我介绍一下我知道的三种方法. 第一种方法是设置窗口WS_EX_TOOLWINDOW扩展样式,通过在OnInitDi ...

  4. 如何隐藏任务栏图标小结(zz)

    如何隐藏任务栏图标小结 如原始任务栏图标如下图: A:彻底隐藏所有上图中已运行程序的小图标? [1]打开运行对话框:     输入gpedit.msc命令,如下: 然后确定: [2]弹出组策略窗口,依 ...

  5. 隐藏任务栏图标的两种简易方法

    1.运用组策略隐藏任务栏图标 在"开始→运行"中输入"GPEDIT.MSC"打开组策略,然后依次选择"用户配置→管理模板→任务栏和开始菜单→隐藏通知区 ...

  6. pyqt5 隐藏任务栏图标

    pyqt5中隐藏任务栏图标很简单,只需要一行代码即可. MainWindow.setWindowFlags(QtCore.Qt.SplashScreen | QtCore.Qt.FramelessWi ...

  7. qt linux系统隐藏任务栏图标

    使用 Qt::Tool, Qt::WindowStaysOnTopHint ,Qt::X11BypassWindowManagerHint三个任意一个都可以隐藏任务栏图标,但不同系统可能对应不同的设置 ...

  8. 如何隐藏任务栏图标小结

    如原始任务栏图标如下图: A:彻底隐藏所有上图中已运行程序的小图标? [1]打开运行对话框:     输入gpedit.msc命令,如下:    然后确定: [2]弹出组策略窗口,依次选择" ...

  9. wampserver启动后右下角任务栏图标不显示

    启动wampserver后,图标右下角任务栏图标变成绿色,然后闪退,不再显示. 解决办法:ctrl + Alt+Delete 打开任务管理器,找到wampserver,右键结束进程,重新打开wamps ...

  10. 【办公软件】如何设置任务栏图标的显示与隐藏

    在平时的办公中使用办公软件,总觉得有消息提示会打扰到自己.或是有一些必用的软件有消息提示却没有显示出来.那么如何才能设置Windows电脑右下角任务栏上的软件状态图标显示与隐藏呢? 如下所示,我在办公 ...

最新文章

  1. mysql 5.7 收费_MySQL5.7 常用用户操作
  2. SAP MM ME1M报表结果不科学?
  3. 根据坐标获取地图经纬度
  4. Flume概述和简单实例
  5. YII用户注冊和用户登录(五)之进行session和cookie分析 ,并在前后区分session和cookie...
  6. 课程分类管理-添加课程分类
  7. [python进阶]11接口:从协议到抽象基类
  8. python3函数调用时间_Python3 time clock()方法
  9. Java Web工程结构_项目结构
  10. 深入理解javascript函数参数
  11. AngularJS之代码风格36条建议【一】(九)
  12. 山东科技大学计算机网络_山东科技大学计算机网络共20讲视频
  13. 我的云之旅--hadoop单机设置(2)
  14. Tensorflow:variable变量和变量空间
  15. 网管学习日记-浮动静态路由和负载均衡
  16. Unity3D(六)光照系统
  17. 曼联携手HCL开发“数字体验平台”,期待大获全胜
  18. EOS智能合约开发系列(14): 关于require_auth函数
  19. 计算机网络(2)——标准化工作及相关组织
  20. 华南理工大学 数据库实验一 实验截图

热门文章

  1. Hands-on Lab of Azure
  2. wordpress 安装教程
  3. 网站漏洞修复之metinfo SQL注入漏洞
  4. getc/fgetc
  5. Android开发之渐变效果gradient属性
  6. 2个鸡蛋,100层楼问题
  7. 2021中国工业软件上市企业公司排行2021中国智能制造企业排名
  8. python 实现盒滤波boxfilter
  9. 全智通A+常见问题汇总解答—A+人脉关系中的新建权限取消掉后,保存权限,权限依然存在
  10. javascript从入门到跑路-----小文的js学习笔记(11)--------字符串以及字符串的常见方法!