VC中实现窗口隐藏与还原的方法
需积分: 9 15 浏览量
更新于2024-07-24
1
收藏 68KB DOC 举报
"VC++中实现窗口隐藏及从系统托盘恢复显示的方法"
在Microsoft Visual C++ (VC++) 开发环境中,窗口隐藏和从系统托盘恢复显示是常见的功能,通常用于实现应用程序在后台运行而不会占用桌面空间。以下是根据提供的代码片段详细解释如何在VC++中实现这一功能:
1. **窗口隐藏**:
在提供的`CTIME_POWERDlg::ToTray()`函数中,使用`ShowWindow(SW_HIDE)`方法隐藏了主窗口。`ShowWindow`是一个Windows API函数,用于控制窗口的可见性。`SW_HIDE`参数表示将窗口隐藏,不再在任务栏上显示。
2. **系统托盘图标**:
- `NOTIFYICONDATA` 结构用于存储关于系统托盘图标的详细信息。
- 使用`Shell_NotifyIcon(NIM_ADD, &nid)`函数将图标添加到系统托盘。`NIM_ADD`表示添加新的图标,`nid`包含了图标的相关信息,如窗口句柄、图标ID等。
- 通过设置`nid.uCallbackMessage`为`WM_SHOWTASK`,可以指定当用户点击托盘图标时发送的自定义消息。
3. **托盘区域提示**:
`nid.szTip`字段用于设置托盘图标的提示文本,`L"♀冰封星耀♂"`是示例中的提示文字。
4. **从系统托盘恢复显示**:
要从系统托盘恢复窗口,你需要处理`WM_SHOWTASK`消息。通常,你将在`CTIME_POWERDlg`类的`OnMessage`或`OnCommand`方法中处理这个自定义消息,例如:
```cpp
LRESULT CTIME_POWERDlg::OnMessage(WPARAM wParam, LPARAM lParam)
{
if(wParam == WM_SHOWTASK) // 检查是否接收到自定义消息
{
ShowWindow(SW_RESTORE); // 使用SW_RESTORE参数恢复窗口到之前的状态
Shell_NotifyIcon(NIM_DELETE, &nid); // 移除托盘图标,因为窗口已显示
}
return 0;
}
```
5. **删除托盘图标**:
`CTIME_POWERDlg::DeleteTray()`函数用于从系统托盘移除图标,这通常在程序退出或者用户不再需要托盘图标时执行。`Shell_NotifyIcon(NIM_DELETE, &nid)`将指定的图标从托盘区域移除。
请注意,为了完整实现上述功能,你需要确保在应用程序的主消息循环中正确处理消息,并且在适当的地方调用`CTIME_POWERDlg::ToTray()`和`CTIME_POWERDlg::DeleteTray()`方法。此外,可能还需要处理其他消息,例如`WM_DESTROY`或`WM_ACTIVATEAPP`,以确保在窗口关闭或应用程序激活/非激活时正确管理托盘图标和窗口状态。
2010-06-27 上传
2024-01-16 上传
2023-09-17 上传
2023-06-10 上传
2023-09-07 上传
2023-09-01 上传
2023-08-04 上传
wzb413
- 粉丝: 16
- 资源: 56
最新资源
- WPF渲染层字符绘制原理探究及源代码解析
- 海康精简版监控软件:iVMS4200Lite版发布
- 自动化脚本在lspci-TV的应用介绍
- Chrome 81版本稳定版及匹配的chromedriver下载
- 深入解析Python推荐引擎与自然语言处理
- MATLAB数学建模算法程序包及案例数据
- Springboot人力资源管理系统:设计与功能
- STM32F4系列微控制器开发全面参考指南
- Python实现人脸识别的机器学习流程
- 基于STM32F103C8T6的HLW8032电量采集与解析方案
- Node.js高效MySQL驱动程序:mysqljs/mysql特性和配置
- 基于Python和大数据技术的电影推荐系统设计与实现
- 为ripro主题添加Live2D看板娘的后端资源教程
- 2022版PowerToys Everything插件升级,稳定运行无报错
- Map简易斗地主游戏实现方法介绍
- SJTU ICS Lab6 实验报告解析