# 简化版屏幕墙 (SimpleScreenWall)

一个基于Qt开发的轻量级实时窗口预览系统，不依赖任何第三方录制库，直接使用Windows API实现窗口捕获和预览功能。

## 🚀 项目特色

### ✨ 核心功能
- **实时桌面预览** - 显示当前桌面的实时画面
- **窗口图标列表** - 展示所有活动窗口的图标和标题
- **实时窗口预览** - 选中窗口后显示其实时内容
- **最小化窗口支持** - 即使窗口最小化也能预览最后画面
- **智能缓存机制** - 优化性能，减少资源占用

### 🎯 技术优势
- **零依赖** - 不需要AvRecorder、FFmpeg等第三方库
- **轻量级** - 直接使用Windows API，占用资源少
- **高性能** - 多线程架构，智能缓存优化
- **易部署** - 独立可执行文件，无需复杂配置
- **可配置** - 丰富的参数设置，适应不同需求

## 📋 系统要求

- **操作系统**: Windows 10/11 (x64)
- **Qt版本**: Qt 6.2 或更高版本
- **编译器**: MSVC 2019/2022 或 MinGW
- **内存**: 建议 4GB 以上
- **显卡**: 支持基本图形加速

## 🛠️ 编译构建

### 方法一：使用CMake (推荐)

```bash
# 1. 克隆或下载项目文件
# 确保以下文件在同一目录：
# - screenwall_simple.h
# - screenwall_simple.cpp  
# - main_simple.cpp
# - CMakeLists_simple.txt

# 2. 创建构建目录
mkdir build
cd build

# 3. 配置项目
cmake .. -G "Visual Studio 17 2022" -A x64
# 或者使用 MinGW:
# cmake .. -G "MinGW Makefiles"

# 4. 编译项目
cmake --build . --config Release

# 5. 运行程序
.\bin\SimpleScreenWall.exe
```

### 方法二：使用Qt Creator

1. 打开Qt Creator
2. 选择 "Open Project"
3. 选择 `CMakeLists_simple.txt` 文件
4. 配置Kit（选择合适的Qt版本和编译器）
5. 点击 "Build" 按钮编译
6. 点击 "Run" 按钮运行

### 方法三：手动编译

```bash
# 使用qmake（需要先创建.pro文件）
qmake -project
qmake
make  # 或 nmake (Windows)
```

## 🎮 使用说明

### 启动程序
1. 运行 `SimpleScreenWall.exe`
2. 点击 "▶️ 启动" 按钮开始屏幕墙服务
3. 程序将自动开始捕获桌面和窗口内容

### 界面布局
```
┌─────────────────────────────────────────┐
│  🖥️ 简化版屏幕墙控制面板                    │
│  [▶️ 启动] [⏹️ 停止] [🔄 刷新] [⚙️ 设置]     │
├─────────────────────────────────────────┤
│           桌面实时预览区域                  │
│        (点击可切换到桌面预览)               │
├─────────────────────────────────────────┤
│  [图标1] [图标2] [图标3] [图标4] ...       │
│     窗口图标列表 (可滚动)                  │
├─────────────────────────────────────────┤
│         选中窗口的实时预览                  │
│      (显示窗口的实时内容)                  │
└─────────────────────────────────────────┘
```

### 操作指南
- **选择窗口**: 点击中间区域的窗口图标
- **桌面预览**: 点击上方的桌面预览区域
- **刷新列表**: 点击 "🔄 刷新" 按钮更新窗口列表
- **调整设置**: 点击 "⚙️ 设置" 打开配置对话框
- **查看日志**: 使用菜单 "视图" -> "显示/隐藏日志" (Ctrl+L)

## ⚙️ 配置选项

### 性能设置
- **桌面更新间隔**: 100-5000ms (默认: 500ms)
- **窗口列表更新间隔**: 500-10000ms (默认: 2000ms)
- **窗口预览更新间隔**: 100-2000ms (默认: 200ms)
- **最大缓存数量**: 10-200个 (默认: 50个)

### 显示设置
- **缩略图尺寸**: 80x60 到 300x225 像素
- **桌面预览尺寸**: 200x150 到 800x600 像素

### 功能开关
- **启用桌面预览**: 开启/关闭桌面实时捕获
- **启用窗口预览**: 开启/关闭窗口实时捕获
- **显示最小化窗口**: 是否在列表中显示最小化的窗口

## 🔧 高级功能

### 快捷键
- `F5` / `Ctrl+R`: 刷新窗口列表
- `Ctrl+L`: 显示/隐藏日志面板
- `Ctrl+Shift+L`: 清空日志
- `Ctrl+,`: 打开设置对话框
- `Ctrl+Q`: 退出程序

### 菜单功能
- **文件菜单**: 退出程序
- **视图菜单**: 刷新、日志控制
- **工具菜单**: 设置、系统信息
- **帮助菜单**: 关于信息、Qt信息

### 配置文件
程序会自动保存配置到 `config.json` 文件，包含所有用户设置。

## 🐛 故障排除

### 常见问题

**Q: 程序启动后看不到任何窗口预览？**
A: 检查以下几点：
- 确保有管理员权限（某些系统窗口需要）
- 检查防火墙/杀毒软件是否阻止
- 尝试重启程序或刷新窗口列表

**Q: 预览画面卡顿或延迟严重？**
A: 调整性能设置：
- 增加更新间隔时间
- 减少缓存数量
- 降低预览尺寸

**Q: 某些窗口无法预览？**
A: 这是正常现象，以下窗口可能无法捕获：
- 受保护的系统窗口
- 使用硬件加速的全屏应用
- 某些安全软件窗口

**Q: 内存占用过高？**
A: 优化建议：
- 减少最大缓存数量
- 增加更新间隔
- 关闭不需要的预览功能

### 性能优化建议

1. **硬件配置**
   - 使用SSD硬盘提升响应速度
   - 确保足够的内存空间
   - 关闭不必要的后台程序

2. **软件设置**
   - 根据实际需求调整更新频率
   - 合理设置缓存大小
   - 定期清理日志文件

3. **系统优化**
   - 关闭Windows视觉效果
   - 设置高性能电源模式
   - 更新显卡驱动程序

## 📊 技术架构

### 核心组件
```
SimpleScreenWall (主组件)
├── SimpleDesktopPreview (桌面预览)
├── SimpleWindowList (窗口列表)
├── SimpleWindowPreview (窗口预览)
├── SimpleWindowFinder (窗口查找)
├── SimpleCacheManager (缓存管理)
└── SimpleScreenWallUtils (工具函数)
```

### 技术栈
- **UI框架**: Qt6 Widgets
- **图像处理**: Qt6 Gui (QPixmap, QPainter)
- **系统API**: Windows API (User32, GDI32, DWM)
- **多线程**: Qt6 Concurrent
- **配置管理**: JSON格式

### 关键API
- `EnumWindows`: 枚举所有窗口
- `PrintWindow`: 捕获窗口内容
- `BitBlt`: 复制屏幕内容
- `GetWindowText`: 获取窗口标题
- `GetWindowIcon`: 获取窗口图标

## 🔄 版本历史

### v1.0.0 (当前版本)
- ✅ 实现基本的屏幕墙功能
- ✅ 支持实时桌面和窗口预览
- ✅ 添加配置管理和缓存优化
- ✅ 完善的用户界面和交互
- ✅ 详细的日志和错误处理

### 计划功能 (未来版本)
- 🔄 多显示器支持
- 🔄 窗口搜索和过滤
- 🔄 预览录制功能
- 🔄 主题和皮肤系统
- 🔄 插件扩展机制

## 🤝 贡献指南

欢迎提交问题报告、功能建议或代码贡献！

### 开发环境设置
1. 安装Qt 6.2+和合适的编译器
2. 克隆项目代码
3. 使用Qt Creator或CMake构建
4. 运行测试确保功能正常

### 代码规范
- 使用C++17标准
- 遵循Qt编码规范
- 添加适当的注释和文档
- 确保跨平台兼容性（主要支持Windows）

## 📄 许可证

本项目采用 MIT 许可证，详见 [LICENSE](LICENSE) 文件。

## 📞 联系方式

- **项目主页**: [GitHub Repository]
- **问题反馈**: [GitHub Issues]
- **邮箱支持**: support@simplescreenwall.com
- **QQ群**: 123456789

---

**简化版屏幕墙** - 让窗口预览变得简单高效！ 🚀