MFC让托盘弹出菜单失去焦点自动关闭

MFC让系统托盘菜单失去焦点时自动消失 方法是在TrackPop前面加上: SetForegroundWindow(); pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);    SetForegroundWindow 函数功能:该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视 阅读详情

       MFC 托盘弹出控制菜单后,单击其他地方或按ESC键也都不能使托盘菜单消失(一直悬挂着怪让人难受的),必须选择托盘菜单里的控制选项才能关闭菜单(好比到一家餐厅不点菜不给走呀),这是个很严重的问题,因为如果你的菜单里面只有“关闭”按钮,那是杯具中的杯具。

不过MSDN中给出了解决办法:

135788:Menus for Notification Icons Do Not Work Correctly

SYMPTOMS:When you display a context menu for a notification icon, clicking anywhere besides the menu or the window that created the menu doesn't cause the menu to disappear.

RESOLUTION:To correct the first behavior, you need to make the current window the foreground window before calling TrackPopupMenu or TrackPopupMenuEx.

修正办法就是将SetForegroundWindow()放在pSubMenu->TrackPopupMenu()前面,这样就使得当前窗口变为前置了。

 

这样当弹出菜单失去焦点之后,就会自动关闭了!其实这个所谓的设计,可害苦了程序员呀!!!

VC++ MFC对话框实现最小化到系统托盘:原理、代码与避坑指南 在Windows桌面应用开发中,系统托盘(通知区域)是后台程序实现静默运行和便捷交互的重要组件。其核心原理基于Windows Shell提供的Shell_NotifyIcon API,通过向系统注册图标、关联窗口句柄和自定义消息,实现用户与后台进程的交互。这项技术对于需要常驻后台的工具软件、通讯客户端和监控程序具有重要价值,能有效提升用户体验,节省任务栏空间。在MFC框架下,开发者需深入理解消息映射机制和资源管理,正确处理窗口最小化/关闭事件、自定义消息响应以及图标生命周期,才能避免图标残留、交互失灵等常见 阅读详情

相关推荐

今天论坛中遇到的两则问题说明(COM库的初始化问题以及托盘图标弹出菜单不消失问题)

COM库初始化 托盘图标菜单不消失 MSDN

dvlinker的技术专栏 2646

MFC对话框对控件失去焦点和获取焦点的统一处理,WM_KILLFOCUS消息失败

如上图,我实现了WM_KILLFOCU的映射,但是对话框除了第一次会进去下面的消息函数后,再也没有进来过来我在对话框上摆放的Edit控件失去焦点也不会进来 后面无意中看到一篇文章,正确的处理方式应该是这样重载虚函数,OnCommand 所有编辑控件的获取焦点和失去焦点,上面都可以监控到了同理,监控按钮的获取焦点和失去焦点就是BN_SETFOCUS和BN_KILLFOCUS......

tajon1226的专栏 3579

创建带自定义右键菜单的Windows系统托盘图标

本文还有配套的精品资源,点击获取 简介:本开发项目演示了如何在Windows系统托盘区域添加自定义右键菜单功能,通过使用Visual Studio 2008和Win32 API。开发者上传了包含自定义注释的代码至优快云,以便初学者理解和学习实现系统托盘图标及右键菜单。项目涉及的知识点包括Win32 API的使用、消息处理机制、菜单创建与管理、资源管理以及可能用到的MFC库...

weixin_42620563的博客 1903

SetForceGroundWindow

SetForegroundWindow 函数功能:该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。系统给创建前台窗口的线程分配的权限稍高于其他线程。 函数原型:BOOL SetForegroundWindow(HWNDhWnd) hWnd为指定的窗口的窗口句柄。 返回值:如果窗口设入了前台,返回值为非零;如果窗口未被设入前台,...

weixin_30415113的博客 283

多元相关性分析_PAST:最简便易用的统计学分析软件教程目录

欢迎来到PAST的世界!本教程并不是将PAST的所有功能均进行详细介绍,而只是挑选与生物、医学、微生物研究相关的统计学分析内容进行讲述。根据PAST内各项分析的标签分类,将该教程具体设置如下:PAST软件介绍PAST的基本信息数据的输入和修改数据的转换和标准化图像绘制 (Plot标签)点线图和直方图散点图条形图和箱须图饼图堆叠条形图三元相图气泡图单变量统计学分析 (Univariate标...

weixin_39605706的博客 3158

华为HCIP-001:PPPOE配置模拟实验

华为HCIP01:PPPOE配置模拟实验 实验环境 pppoe-client上面的接口信息 [AR1]dis ip interface brief *down: administratively down ^down: standby (l): loopback (s): spoofing The number of interface that is UP in Physical is 2 The number of interface that is DOWN in Physical is 1 Th

兔子乖乖 1802

MFC使控件失去焦点的方法

1.SetFocus另外一个控件 GetDlgItem(另一个控件名)->SetFocus(); 2.给要失去焦点的控件发WM_KILLFOCUS消息 GetDlgItem(要失去焦点的控件名)->PostMessage(WM_KILLFOCUS, 0, 0); ::SendMessage(GetDlgItem(要失去焦点的控件名)-> m_hWnd,WM_KILLFOCUS,-1,0); SendDlgItemMessage(要失去焦点的控件...

jiachao_的博客 3002

超过4.2万个AOI(地理围栏),深圳市2025年2月15日更新的全类别AOI,矢量图层(全国22个超大特大城市AOI更新系列)

超过4.2万个AOI(地理围栏),深圳市2025年2月15日更新的全类别AOI,矢量图层(全国22个超大特大城市AOI更新系列)

1072

MFC 窗口失去焦点(编辑框控件无法接收键盘输入)

当不小心把对话框的属性——不激活, 设置成TRUE, 在对话框运行的时候将不会被激活,只能响应鼠标,但是无法响应键盘输入,同时对话框的标题也是灰色,如图: 把属性 -> 不激活 设置成false, 对话框捕捉到焦点,可以响应鼠标输入和键盘输入,同时,当鼠标回到对话框范围点击对话框控件,对话框的标题也会高亮显示了,如图: ...

hill_guo的博客 3883

微信小程序 - 最新详细实现模板消息订阅通知功能,给用户微信发送“服务通知“模板消息并点击进入跳转到小程序页面路由,订阅消息通知详细后台申请流程及示例代码,解决授权申请弹框被拒绝后无法调起、常见报错!

微信小程序,vue2,vue3,模板消息,订阅通知,服务通知,小程序模板通知,订阅微信模板消息功能,唤起模板消息订阅弹框并发送服务通知,消息订阅与模板消息发送,一次性订阅,长期永久订阅,申请模板id,详细示例代码教程,配置流程,消息模板,模板ID,用户收不到消息,订阅了通知但微信不来服务通知,报错,小程序平台模板消息订阅功能,唤起订阅模板消息弹框,订阅模板消息发送服务通知功能,如何做模板消息订阅,一直收不到通知,用户通过弹窗订阅,订阅消息,无法打开申请授权弹框,用户拒绝/关闭后,如何引导用户再开启,拒绝后怎

🏆 前端领域优质创作者 5329

结构光之相移法+多频外差的数学原理推导

‍论文:基于数字光栅投影的结构光三维测量技术与系统研究 [博]作者:李中伟 华中科技大学 2007功能:相移法:多频外差(三频N步相移法)01 相移法图1 待写入投影仪的理想N步相移条纹通常对于 步相移来说,生成第 幅条纹图像(如图1所示)的公式如下:402 Payment Required其中::背景光强:调制强度:像素点横向坐标:相移值图2 相机拍摄到的实际 N ......

3D视觉工坊 1190

MFC 让控件失去焦点

MFC 让控件失去焦点

tcitcitci的博客 6132

AutoSAR配置与实践(基础篇)2.5 RTE对数据一致性的管理

SWC内部不同的Runnable访问共同全局变量,Runnable类似C文件中的函数,这些函数如果被放在不同Task上运行, 可能出现出现同一时刻多个函数共同运行的情况。可以通过为受影响的任务分配相同的优先级,为受影响的任务分配相同的内部操作系统资源,或者将OS的任务配置为非抢占性来实现。数据一致性:当多个操作同时读写同一个数据,由于任务的抢占,出现了数据被篡改的情况,造成非预期的数据结果。SWC内部变量保护,限定局变量的作用域在变量的作用域在SWC的不同runnable间。

nihaoljq2010的博客 2628

MFC为应用程序添加托盘(右键托盘,弹出菜单)

源代码:http://download.youkuaiyun.com/detail/nuptboyzhb/4137784 1.       导入一个托盘图标的资源(.ico)格式;资源ID为IDI_ICON1 2.       在框架程序的初始化函数中,初始化一个托盘图标的一个结构体 NOTIFYICONDATA notifyicondata;//NOTIFYICONDATA结构      n

郑海波(莫川)的优快云博客 7768

GEE 案例:利用多源遥感数据计算RUSLE(Revised Universal Soil Loss Equation)土壤侵蚀

该数据集提供了全球范围内以250至500米的空间分辨率获取的多光谱图像数据,用于监测地表覆盖和变化。RUSLE模型的基本原理是通过考虑土壤侵蚀的主要驱动因素,来估计土壤侵蚀的速率。该数据集提供了全球范围内以10至60米的空间分辨率获取的多光谱图像数据,用于监测地表覆盖和变化。它对农业和土地资源管理者提供了一种评估和预测土壤侵蚀风险的工具,以制定适当的土壤保护措施和决策。2. soil(土壤)是来自OpenLandMap的土壤纹理分类数据,使用了USDA(美国农业部)土壤纹理分类系统。

此星光明博客 805

YOLO26 标签分配机制:STAL 小目标感知分配策略

YOLO26提出的STAL标签分配策略通过尺度感知机制优化了小目标检测性能。该方法根据目标面积将检测对象分为小、中、大三类,分别采用差异化的分配参数(TopK数量、IoU阈值和中心度权重),特别是对小目标采用更宽松的匹配条件和更高的中心度权重。实验结果表明,STAL策略显著提升了小目标检测精度(AP_small),同时保持了整体检测性能(mAP),为解决目标检测中尺度不平衡问题提供了有效方案。

一键难忘的博客 792

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

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

weixin_36011776的博客 375

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

在MFC中怎样将窗口最小化到托盘

1、自定义消息WM_SHOWTASK: #define WM_SHOWTASK (WM_USER +1001) 1、首先建立一个基于对话框的MFC程序; 2、在资源中的Icon中导入一个自己喜欢的图标,ID命名为IDR_MAINFRAME,将先前的IDR_MAINFRAME的图标删除掉; 3、在自己的Dialog头文件中定义一个变量  NOTIFYICONDATA m_n

xuelang_007的专栏 496

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

efm32 入门.pdf

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

MFC 应用最小化到系统托盘

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

Darker的博客 1155

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

让托盘弹出菜单失去焦点时自动消失

from:http://www.slyar.com/blog/tray-menu-exit.html 转自: http://www.slyar.com/blog/tray-menu-exit.html 托盘弹出控制菜单后,单击其他地方或者按ESC键不能使托盘菜单消失,必须选择托盘菜单里的控制选项才能关闭菜单...很纠结的一个问题。 查了好久,终于在MSDN

mail_cm的专栏 2527

MFC小笔记:系统托盘实现

一、需求 本文实现程序系统托盘。 二、界面 主界面为对话框,有最小化、最大化、关闭等功能。 三、原理 利用系统托盘类NOTIFYICONDATA,响应自定义消息,处理托盘鼠标事件。 四、编码 4.1 消息定义 定义消息ID,必须大于WM_USER,为方便起见,可在stdafx.h中定义: #define WM_SHOWTASK (WM_USER+1) // 系统托盘事件 在子对话框头文件声明...

李迟的专栏 1321

VisualStudio2022 MFC对话框窗体托盘图标设计

环境:VisualStudio2022 框架: MFC 对话框窗体 功能:托盘 对话框类:CBLToolsDlg 作者:CDamogu 时间:20220308

CDamogu 1482

MFC程序最小化到托盘

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

2292

MFC 弹出菜单不消失?让 Codex 走 TaoToken 查 SetForegroundWindow

MFC 弹出菜单不消失,问题多在 TrackPopupMenu 前漏掉 SetForegroundWindow。让 Codex 走 TaoToken 复查时,先到 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 创建 Key,再改 ~/.codex/config.toml,再本地验证 Esc 关闭。

weixin_42598278的博客 8

DuiLib 程序最小化至托盘,在托盘中右键关闭

问题: 今天遇到程序点击关闭按钮时将程序最小化至托盘,在托盘中右键程序的菜单中关闭程序的问题,记录一下。 解决: 1、声明变量和函数 //声明变量 NOTIFYICONDATA m_trayIcon; //!< 定义托盘图标对象 //声明函数 void AddTrayIcon(); //!< 添加托盘图标(初始化) 2、引用头文件、自定义消息响应 #include <ShellAPI.h> #define WM_SHOWTASK WM_USER+101 ..

m0_43605481的博客 660
上一篇: Win7下安装SQL2008详细步骤-图解
下一篇: MFC使用SkinMagic使用详解【初级】
Big Joker
博客等级 码龄14年 92粉丝 63原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值