当前位置: 首页 > news >正文

MFC:程序的托盘显示

介绍

关键技术,API函数Shell_NotifyIcon,具体查看msdn吧

实现的主要代码

#define MY_TRAY_ICON_ID (1)/
//其他代码:略BEGIN_MESSAGE_MAP(CTestShowTrayDlg, CDialogEx)//...ON_MESSAGE(WM_MY_TRAY_ICON, &CTestShowTrayDlg::OnMessageTrayIcon)/
END_MESSAGE_MAP()void CTestShowTrayDlg::ShowTrayIcon()
{NOTIFYICONDATA nid = { 0 };nid.cbSize = sizeof(NOTIFYICONDATA);nid.hWnd = this->m_hWnd;nid.uID = MY_TRAY_ICON_ID;nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;nid.uCallbackMessage = WM_MY_TRAY_ICON; //托盘图标中消息回调,如鼠标左键、右键等等nid.hIcon = m_hIcon;_tcscpy_s(nid.szTip, _T("测试托盘显示图标"));Shell_NotifyIcon(NIM_ADD, &nid); //在托盘区添加图标
}void CTestShowTrayDlg::DelTrayIcon()
{NOTIFYICONDATA nid = { 0 };nid.cbSize = sizeof(NOTIFYICONDATA);nid.hWnd = this->m_hWnd;nid.uID = MY_TRAY_ICON_ID;Shell_NotifyIcon(NIM_DELETE, &nid); //在托盘区移除图标
}LRESULT CTestShowTrayDlg::OnMessageTrayIcon(WPARAM wParam, LPARAM lParam)
{if (wParam != MY_TRAY_ICON_ID)//wParam传入nid.uID{return TRUE;}switch (lParam){case WM_LBUTTONUP:case WM_LBUTTONDBLCLK:{OnMenuShowWindow();break;}case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”{CPoint ptCursor;::GetCursorPos(&ptCursor);//从资源中加载菜单CMenu mTrayMenu;mTrayMenu.LoadMenu(MAKEINTRESOURCE(IDR_MENU_TRAY));CMenu* pMenu = mTrayMenu.GetSubMenu(0);if (pMenu) pMenu->TrackPopupMenu(TPM_LEFTALIGN, ptCursor.x, ptCursor.y, this);mTrayMenu.DestroyMenu(); //资源回收break;}}return TRUE;
}//显示主界面
void CTestShowTrayDlg::OnMenuShowWindow()
{this->ShowWindow(SW_SHOWNORMAL);this->SetForegroundWindow();this->SetActiveWindow();
}//退出
void CTestShowTrayDlg::OnMenuExit()
{DelTrayIcon();CDialogEx::OnCancel();
}void CTestShowTrayDlg::OnOK()
{// TODO:  在此添加专用代码和/或调用基类//屏蔽ESC/Enter//CDialogEx::OnOK();
}void CTestShowTrayDlg::OnCancel()
{this->ShowWindow(SW_HIDE);//屏蔽ESC/Enter//CDialogEx::OnCancel();
}

参看

https://www.cnblogs.com/htj10/p/11688347.html

相关文章:

MFC:程序的托盘显示

介绍 关键技术,API函数Shell_NotifyIcon,具体查看msdn吧 实现的主要代码 #define MY_TRAY_ICON_ID (1)/ //其他代码:略BEGIN_MESSAGE_MAP(CTestShowTrayDlg, CDialogEx)//...ON_MESSAGE(WM_MY_TRAY_ICON, &CTestShowTrayDlg::OnMessag…...

AI绘画:StableDiffusion实操教程-斗破苍穹-云韵-婚服(附高清图下载)

大家好,我是小梦,最近一直研究AI绘画。 不久前,我与大家分享了StableDiffusion的全面教程:“AI绘画:Stable Diffusion 终极宝典:从入门到精通 ” 然而,仍有些读者提出,虽然他们已经…...

JS装饰器的介绍

装饰器的基本介绍 装饰器是一种特殊类型的声明,它能够被附加到类声明,方法,访问符,属性或参数上。 装饰器使用expression这种形式,expression求值后必须为一个函数,它会在运行时被调用,被装饰的…...

微信小程序(原生)使用Swiper实现(商品详情)视频和图片轮播(仿京东/淘宝商品详情头部视频+图片轮播)

一、需求 1、如果第一是视频&#xff0c;不进行自动轮播 2、可以手动滑动切换 3、点击播放视频&#xff0c;也可以手动滑动切换 4、视频播放完后&#xff0c;自动轮播 5、视频可以点击暂停和全屏播放二、最终效果 三、源码 播放icon使用了TDesign组件库 1、wxml <swiper c…...

关于for in 循环会遍历原型链上的属性的问题

关于for in 循环会遍历原型链上的属性的问题 for in可遍历原型链上扩展的属性&#xff0c;Object.keys() 只遍历自身属性 1.使用 for in 循环遍历对象的属性时&#xff0c;原型链上的所有属性都将被访问&#xff1a; Object.prototype.say"cgl"; // 修改Object.p…...

冠达管理:人民币升值板块个股?

人民币增值是当前热门的论题之一。面对这一趋势&#xff0c;许多投资者开端重视人民币增值板块个股的投资时机。可是&#xff0c;终究哪些职业和个股能够从人民币增值中获益&#xff1f;下面从多个视点分析这个问题。 一、出口相关职业 跟着人民币增值&#xff0c;我国的出口企…...

27.EI文章复现《高比例清洁能源接入下计及需求响应的配电网重构》

下载地址&#xff1a;高比例清洁能源接入下计及需求响应的配电网重构 1主要内容 该程序复现《高比例清洁能源接入下计及需求响应的配电网重构》&#xff0c;以考虑网损成本、弃风弃光成本和开关操作惩罚成本的综合成本最小为目标&#xff0c;针对配电网重构模型的非凸性&…...

mysql的索引结构

索引概述 索引&#xff08; index &#xff09;是帮助 MySQL 高效获取数据的数据结构 ( 有序 ) 。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&#xff08;指向&#xff09;数据&#xff0c; 这样就可以在这些…...

SMT生产中基板的机械清洁处理法有哪些

在S MT贴片加工 过程中&#xff0c;锡育和助焊剂会产生残留物质&#xff0c;残留物中包含有有机酸和可分解的电离子&#xff0c;某中有机酸狊 有腐蚀作用&#xff0c;电高子难留在焊盘还会引(起短路&#xff0c;而且这些残留物在PCBA板上是非常脏的&#xff0c;而旦不符合顾客…...

微服务面试题

一、什么是微服务 二、微服务之间是如何通讯的&#xff1f; 2.1、同步 优点&#xff1a;实时性 缺点&#xff1a;降低了可用性&#xff0c;因为客户端和服务端在请求过程中必须都是可用的 2.1.1、REST 优点&#xff1a;开发成本低&#xff0c;适应异构语言 2.1.2、RPC …...

LeetCode 1132.申请的报告2

数据准备 Create table If Not Exists Actions (user_id int, post_id int, action_date date, action ENUM(view, like, reaction, comment, report, share), extra varchar(10)); create table if not exists Removals (post_id int, remove_date date); Truncate table Act…...

室内探索无人机,解决复杂环境下的任务挑战!

前言 室内探索无人机是一种专为在室内环境中进行任务的无人机系统。相比传统的人员部署&#xff0c;室内探索无人机具有更高的灵活性和机动性&#xff0c;能够在复杂的室内环境中执行任务&#xff0c;用于未知环境的探索和特定目标的搜索。 为完成无人机室内搜索与识别等复杂…...

操作指南 | 如何参与Moonbeam投票委托

投票委托允许没有时间或者专业度一般的用户能够在治理中拥有话语权。该功能加强了决策流程&#xff0c;并且确保更大范围地代表社区利益。 通过Moonbeam委托平台&#xff0c;你需要 $GLMR 和一个相兼容的钱包。此教程使用MetaMask示范。 如何参与投票委托 前往http://delega…...

xxl-job中多节点分片的时候如何在linux服务器开启多个执行器实例?

在 xxl-job 中&#xff0c;可以通过在 Linux 服务器上启动多个执行器实例来实现分布式的分片任务处理。以下是在 Linux 服务器上开启多个执行器实例的步骤&#xff1a; 1.复制并配置多个执行器项目模块&#xff1a; 复制原始的执行器项目模块&#xff0c;并重命名为不同的名称…...

springboot三种注入方式

在Spring Boot中&#xff0c;您可以使用三种主要的方式来进行依赖注入&#xff1a; 构造函数注入&#xff08;Constructor Injection&#xff09;&#xff1a;您可以在类的构造函数中声明依赖项&#xff0c;然后Spring容器会在创建Bean实例时自动注入这些依赖项。这种方式通常用…...

信息化发展38

组织模型一信息系统战略 1 、信息系统战略是组织用来提供信息服务的计划。 2 、信息系统支撑组织实施其业务战略。业务战略是关于竞争&#xff08;服务对象想要什么&#xff0c; 竞争做什么&#xff09; &#xff0c; 定位&#xff08;组织想以什么方式竞争&#xff09;和能力…...

PMP含金量再升级!北京上海等地可评职称!

最近PMP证书又“升级”了&#xff0c;不过不是证书上的改变&#xff0c;而是含金量在原有基础上又上升了一个档次。 9月4日&#xff0c;北京市人力资源和社会保障局联合北京市人才工作局发布关于印发《北京市境外职业资格认可目录(3.0版)》的通知&#xff0c;PMP项目管理证书也…...

动态调用微服务

主要由三个文件组成 DynamicService.java DynamicFeignClientFactory.java DynamicClient.java 代码 package org.jeecg.modules.cloud.feign;import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.GetMapping; im…...

什么是字符集什么是字符编码

什么是字符集&#xff0c;什么是字符编码&#xff0c; unicode 和 utf8的区别 字符集&#xff08;Character Set&#xff09;&#xff1a; 字符集是一组字符的集合&#xff0c;通常按照某种规则组织和分类。例如&#xff0c;ASCII&#xff08;美国信息交换标准码&#xff09;是…...

Python小项目之Tkinter应用】随机点名/抽奖工具大优化:新增查看历史记录窗口!语音播报功能!修复预览文件按钮等之前版本的bug!

文章目录 前言一、实现思路二、关键代码查看历史记录按钮语音播报按钮三、完整代码总结前言 老生常谈,先看效果:(订阅专栏可获取完整代码) 初始状态下,我们为除了【设置】外的按钮添加弹窗,提示用户在使用工具之前要先【设置】。在设置界面,我们主要修改了【预览文件】…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...