MFC中将窗口最小化到托盘的一种方法

MFC中窗口最小化到托盘处 1,自定义消息宏 阅读详情
(一) 原理
  1、最小化的原理:首先要将窗口隐藏,然后在右下角绘制图标。

  2、恢复的原理:将窗口显示,再将托盘中的图片删除。

(二)程序实现
  1、自定义消息WM_SHOWTASK:
  #define WM_SHOWTASK (WM_USER +1)
  2、在MFC的
  ::OnSysCommand(UINT nID, LPARAM lParam) 函数体中增加一个命令响应
  if(nID==SC_MINIMIZE)
  ToTray(); //最小化到托盘的函数
  3、在消息映射中添加
  ON_MESSAGE(WM_SHOWTASK,OnShowTask); //其中WM_SHOWTASK是消息名,
  OnShowTask是自己定义的消息响应函数,后面有说明。

(三)具体函数内容
  1、最小化到托盘函数
  void CMyDlg::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); //隐藏主窗口
  }
  2、恢复界面函数
  在头文件中定义消息响应函数
  afx_msg LRESULT OnShowTask(WPARAM wParam,LPARAM lParam) ;

//wParam接收的是图标的ID,而lParam接收的是鼠标的行为
  LRESULT CMyDlg::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();//声明一个弹出式菜单

 menu.AppendMenu(MF_STRING,WM_DESTROY,"关闭"); //增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口(已隐藏),将程序结束。
  menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this); //确定弹出式菜单的位置
  HMENU hmenu=menu.Detach();
  menu.DestroyMenu(); //资源回收
  delete lpoint;
  } break;
  case WM_LBUTTONDBLCLK: //双击左键的处理
  {
  this->ShowWindow(SW_SHOW);//简单的显示主窗口完事儿
  DeleteTray();
  } break;
  default: break;
  }
  return 0;
  }

 删除托盘图标函数
  void CMyDlg::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); //在托盘区删除图标
  }

VC++ 实现 窗口最小化 MFC 所谓的“托盘”,在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那一部分。在程序最小化或挂起时,但有不希望占据任务栏的时候,就可以把程序放到托盘区。 一 、原理 1、最小化的原理:首先要将窗口隐藏,然后 在右下角绘制图标。 2、恢复的原理:将窗 阅读详情

相关推荐

关于在MFC中将窗口最小化到托盘实现原理及操作步骤

步骤/方法 (一) 原理 1、最小化的原理:首先要将窗口隐藏,然后在右下角绘制图标。 2、恢复的原理:将窗口显示,再将托盘中的图片删除。 (二)程序实现 1、自定义消息WM_SHOWTASK: #define WM_SHOWTASK (WM_USER +1) 2、在MFC的 ::OnSysCommand(UINT nID, LPARAM lParam) 函数体中增加一个命令响应 if(nID==SC_MINIMIZE) ToTray(); //最小化到托盘的函数 3、在消息映射中添加 ON_MESSAGE(WM_SHOWTASK,OnShowTask); //其中WM_SHOWTASK是消息名

MFC程序最小化到托盘

简而言之:程序最小化到托盘就是先在托盘区绘制一个图标,然后把程序隐藏不见。而恢复就是将程序窗口显示,再将托盘中的图标删除。

2292

机器人导航学习历程(四)local planner

local planner   我们先来回顾一下Navigation的框架,可以看出位于红框中的local_planner是move_base节点的一部分,输入包括来自global_planner的全局的规划路径、里程计信息以及local_costmap的信息,输出是速度控制指令,作为控制器的输入。 base_local_planner   局部规划一般是用base_local_planner包...

yuniruchujian的博客 4412

【MFC】最小化到托盘

/增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口,将程序结束。//声明一个弹出式菜单。case WM_LBUTTONDBLCLK://双击左键的处理。//右键起来时弹出快捷菜单,这里只有一个“关闭”//最小化到托盘的函数。//信息提示条为“计划任务提醒”2、定义最小化和托盘双击事件。//简单的显示主窗口完事儿。//确定弹出式菜单的位置。//自定义的消息名称。//在托盘区删除图标。

WBB101100的博客 1080

KEPServerEX物联网网关(IoT Gateway)REST客户端代理(非原创)

(中文版)资料来源于【OPC-KEPServerEX学习KEPWare交流】905485143群的【455196383】【零下一度】 一。KEPServerEX物联网网关REST客户端代理演示 在KSE中,首先构建一个带有通道/设备/标签的模拟器系统。 例如,下面是三个随机项目。 直接到IoT网关插件,添加新代理。 从类型列表中选择REST Client。 终结点...

-雲飛兄-博客 5808

SQL注入详解

SQL注入(SQL Injection)是一种常见的Web安全漏洞,主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱库、被删除、甚至整个服务器权限陷)。 即:注入产生的原因是后台服务器接收相关参数未经过滤直接带入数据库查询...

渗透之路,攻防之间皆学问 26万+

MFC将窗口最小化到托盘

1、在头文件中自定义消息:#define  WM_SHOWTASK  WM_USER+1以及声明消息响应函数:   afx_msg LRESULT onShowTask(WPARAM wParam, LPARAM lParam); 声明一个结构体变量:NOTIFYICONDATA nid; 2、在cpp文件消息映射中添加: ON_MESSAGE(WM_SHOWTASK , onShowTask) 3

吾王★Excalibur 454

Vue3 - Element Plus 组件库 Tabs 标签页右侧区域插入按钮,<el-tabs> / <el-tab-pane> 选项卡组件右侧自定义插槽内容教程(右边区域添加自定义按钮功能区)

vue3,elementplus,tabs选项卡如何在插槽按钮,tabs标签页组件怎么自定义右侧内容,vue3elementplustabs组件右侧插槽按钮,element-plus在el-tabs组件的最右侧添加按钮,如何在选项卡右边加入按钮搜索框等内容,哪个属性能在tab选项卡右侧插入自定义按钮,在el-tabs组件最右侧添加按钮,vue3el-tabs组件怎么自定义右侧插槽内容,Tabs标签页右侧自定义插槽,ElementPlusTab右边加按钮,el-tabs组件自定义右侧按钮,在E

🏆 前端领域优质创作者 7018

MFC 应用最小化到系统托盘

本指南将实现MFC应用程序在关闭时最小化系统托盘的功能,并左键和右键系统托盘图标进行交互。

Darker的博客 1155

英飞凌TC3xx--深度手撕HSM安全启动(三)--TC3xx HSM系统架构

TC3xx的HSM内核是一颗32位的ARM Cortex M3,主频可达100MHz,支持对称算法AES128、非对称算法PKC(Public Key Crypto) ECC256、Hash SHA2,以及TRNG(真随机数生成)。

认真搞搞汽车MCU 5748

一文读懂OpenClaw:核心组件与工作原理深度解析

Agent核心:负责理解意图、规划任务、协调执行消息系统:统一的消息格式,实现组件间解耦工具注册表:可扩展的工具系统,支持自定义工具模型适配层:多模型支持,统一API接口安全机制:沙箱隔离、权限确认、操作审计性能优化:并行执行、智能缓存、增量更新理解这些核心组件和工作原理,将帮助你更好地使用OpenClaw,也为后续开发自定义扩展打下坚实基础。在下一篇文章中,我们将详细介绍OpenClaw的界面操作,包括命令行与交互模式的各种技巧。

gaoxiang_120的专栏 833

MFC最小化到系统托盘

最小化到系统托盘图标流程:点击窗口最小化->自动隐藏任务栏图标,并在托盘图标那边自动添加->双击托盘图标可自动显示窗口->也可右键托盘图标,选择相应菜单操作。 窗口最小化处理:通过WindowProc处理SC_MINIMIZE消息,进行添加系统托盘图标。 LRESULT CshelliconDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_SYSCOMM.

Fzuim的博客 1600

11、RK3566/3568 Android11切割屏幕 长条屏 显示

在使用 RK3566 平台进行 Android 11 开发时,遇到切割屏(长条屏)显示画面不全。本文将详细介绍如何配置,以及如何修改 HWComposer 来调整显示区域,解决图像缩放问题。我这边屏幕是lvds接口的,分辨率1920 1080实际的屏物理尺寸是1920x463。

qq_39451352的博客 253

VS MFC 最小化到托盘

最近做MFC程序,有个最小化托盘的需求,看代码: 添加宏定义: #define WM_SHOWTASK (WM_USER +1) #define IDR_SHOW 11 #define IDR_OTHER 12 #define IDR_EXIT 13 .h 中添加几个函数及参数(参数用来保存状态): void Hide2Tray();//最小化到托盘 void Remove2Tray(...

yikunhan的博客 711

银行业数据科学家的 6 条经验教训

原本希望在计算机科学、统计学和机器学习领域工作。运用新方法获得独特见解,实现一切自动化。简而言之,最终成了这个职业炒作的牺牲品。我想和你们分享一下。希望我们能够摆脱炒作,提高你对数据科学家工作的理解。

茶桁专栏 247

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

托盘程序TrayIcon

 CXTTrayIcon m_TrayIcon;在OnCreate()函数里,创建 if (!m_TrayIcon.Create(  _T("Power Tools for MFC!"), // Toolktip text  this,                       // Parent window  IDR_MAINFRAME,               // Icon

xujianxin's 优快云 Blog 2924

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

MFC 对话框最小到系统托盘

在VC++中,想实现将MFC最小化到系统托盘,需要调用NOTIFYICONDATA类,并注册相应的消息,以下详细讲解如何实现: 第一步,声明一个NOTIFYICONDATA类,也就是NOTIFYICONDATA NotifyIcon;该句可以放在Dlg类的声明中,作为Dlg类的一个成员;也可以放在Dlg类的实现中,作为全局变量来使用。 第二步,声明一个响应...

weixin_30666401的博客 81

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

vc 控制台添加托盘显示_MFC为应用程序添加托盘(右键托盘,弹出菜单)

1. 导入一个托盘图标的资源(.ico)格式;资源ID为IDI_ICON12. 在框架程序的初始化函数中,初始化一个托盘图标的一个结构体NOTIFYICONDATAnotifyicondata;//NOTIFYICONDATA结构notifyicondata.cbSize= sizeof(NOTIFYICONDATA);//为notifyicondata结构体分配空间//为...

weixin_36011776的博客 375

MFC最小化到托盘

在VC++中,想实现将MFC最小化到系统托盘,需要调用NOTIFYICONDATA类,并注册相应的消息,以下详细讲解如何实现:     第一步,声明一个NOTIFYICONDATA类,也就是NOTIFYICONDATA NotifyIcon;该句可以放在Dlg类的声明中,作为Dlg类的一个成员;也可以放在Dlg类的实现中,作为全局变量来使用。     第二步,声明一个响应函数afx_msg v

http://www.softwareace.cn 王牌软件 554

MFC中将窗口最小化到系统托盘和还原

通过以下步骤可以在MFC程序中将窗口最小化到系统托盘,和还原成窗口,附加代码中如有特殊说明则会用红色标出。 1、添加一个ICON图标,其ID为IDI_ICON_TESTICON,在VS2008坐标的Resource View(资源视图)中添加,该图标主要用于在托盘区显示;在头文件中定义添加托盘图标的消息号(用户所有对托盘的消息将对应此消息号): #define WM_ICON_NOTIF...

逍遥子曰: 1557
上一篇: vector动态数组
下一篇: fatal error C1083: 无法打开包括文件:"dxtrans.h": No such file or directory
河海壹粟
博客等级 码龄14年 19粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值