系统托盘api

2024-02-11 20:48
文章标签 api 系统托盘

本文主要是介绍系统托盘api,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

mfc中有个在状态栏创建托盘的api:

BOOL Shell_NotifyIcon(DWORD dwMessage, PNOTIFYICONDATA pnid
);
参数:
dwMessage为输入参数,传递发送的消息,表明要执行的操作。可选的值如下:
NIM_ADD
向托盘区域添加一个图标。此时第二个参数lpdata指向的 NOTIFYICONDATA 结构体中的hWnd和uID成员用来标示这个图标,以便以后再次使用Shell_NotifyIcon对此图标操作。
NIM_DELETE
删除托盘区域的一个图标。此时第二个参数lpdata指向的NOTIFYICONDATA 结构体中的hWnd和uID成员用来标示需要被删除的这个图标。
NIM_MODIFY
修改托盘区域的一个图标。此时第二个参数lpdata指向的NOTIFYICONDATA 结构体中的hWnd和uID成员用来标示需要被修改的这个图标。
NIM_SETFOCUS
Version 5.0. 设置焦点。比如当用户操作托盘图标弹出菜单,而有按下ESC键将菜单消除后,程序应该使用此消息来将焦点设置到托盘图标上。
NIM_SETVERSION
Version 5.0. 设置 任务栏按照第二个参数lpdata指向的NOTIFYICONDATA 结构体中的uVersion成员指定的版本号来工作。此消息可以允许用户设置是否使用基于Windows2000的version 5.0的风格。uVersion的缺省值为0,默认指明了使用原始Windows 95图标消息风格。具体这两者的区别请参考msdn中的Shell_NotifyIcon函数说明的Remarks。
lpdata为输入参数,是指向NOTIFYICONDATA 结构体的 指针,结构体内容用来配合第一个参数wMessage进行图标操作。
如果图标操作成功返回TRUE,否则返回FALSE。
如果dwMessage参数设为NIM_SETVERSION,则如果版本设置成功返回TRUE,如果设置的版本不支持返回FALSE。
该函数主要用于 任务栏右侧的托盘图标的操作。在MFC中,实现最小化到托盘的具体操作如下:
1.在Resource里新建一个图标 Icon 。
2.在窗体类里添加 NOTIFYICONDATA  结构体对象 m_nfData,可以在OnInitDialog()方法里对结构体进行初始化。
3.重写OnSize(UINT,int,int)函数,自行处理SIZE_MINIMIZED 消息,即点击最小化后的处理。例如:
void CYourProjectDlg::OnSize(UINT nType, int cx, int cy)
{
if( nType == SIZE_MINIMIZED )   //截获消息
{
Shell_NotifyIcon(NIM_ADD,&m_nfData);
ShowWindow(SW_HIDE);  
}
else     //其他消息按默认处理方式处理
CDialog::OnSize(nType, cx, cy);
}
4.添加消息映射,处理WM_TRAYICON消息,即点击托盘图标后的处理
ON_MESSAGE(WM_TRAYICON,&CYourProjectDlg::OnTrayIcon)
5.实现消息映射函数,添加具体操作,例如:
LRESULT  CLogCleanToolDlg::OnTrayIcon(WPARAM wParam, LPARAM lParam)
{
if(lParam ==  WM_LBUTTONDBLCLK)   //双击托盘图标
{
Shell_NotifyIcon(NIM_DELETE,&m_nfData);
ShowWindow(SW_SHOWNORMAL);
SetForegroundWindow();
}
return 0;
}
以上就是最常见的用法。如果要其他个性操作,只需修改 NOTIFYICONDATA 结构体的参数即可。

这篇关于系统托盘api的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/700772

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

一分钟带你上手Python调用DeepSeek的API

《一分钟带你上手Python调用DeepSeek的API》最近DeepSeek非常火,作为一枚对前言技术非常关注的程序员来说,自然都想对接DeepSeek的API来体验一把,下面小编就来为大家介绍一下... 目录前言免费体验API-Key申请首次调用API基本概念最小单元推理模型智能体自定义界面总结前言最

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

使用SpringBoot创建一个RESTful API的详细步骤

《使用SpringBoot创建一个RESTfulAPI的详细步骤》使用Java的SpringBoot创建RESTfulAPI可以满足多种开发场景,它提供了快速开发、易于配置、可扩展、可维护的优点,尤... 目录一、创建 Spring Boot 项目二、创建控制器类(Controller Class)三、运行

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大