Skip to content

新增全局快捷键显示/隐藏主窗口功能#2347

Closed
Cyber0xFE wants to merge 5 commits into
zhongyang219:masterfrom
Cyber0xFE:master
Closed

新增全局快捷键显示/隐藏主窗口功能#2347
Cyber0xFE wants to merge 5 commits into
zhongyang219:masterfrom
Cyber0xFE:master

Conversation

@Cyber0xFE

@Cyber0xFE Cyber0xFE commented Jun 7, 2026

Copy link
Copy Markdown

改动概览

本次 PR 包含两项功能新增:

1. 全局快捷键显示/隐藏主窗口 (d2aedfe)

  • 默认热键 Ctrl+Shift+F12,可在常规设置中开关和自定义
  • 使用 RegisterHotKey / WM_HOTKEY 实现系统级全局热键
  • 内置按键录制控件,支持自定义修饰键组合
  • 热键设置持久化保存于 config.ini
  • 支持中/英文国际化

变更文件:CommonData.h GeneralSettingsDlg TrafficMonitor.cpp/.rc TrafficMonitorDlg resource.h language/

2. 皮肤背景多帧动画 (c8920f7)

  • m_background_png_s / m_background_png_l 改为 vector<Gdiplus::Image*>,支持加载多帧 PNG 序列
  • 优先加载 background_0.png background_1.png …,若不存在则回退到单帧 background.png,完全向后兼容旧皮肤
  • 每次 DrawInfo 自动循环切换帧,借助现有刷新周期驱动动画
  • DrawPreview 始终渲染首帧
  • 修复 print_compile_time.bat 预构建事件路径问题

变更文件:SkinFile.h SkinFile.cpp TrafficMonitor.vcxproj

兼容性

  • 旧皮肤无任何影响
  • API 接口无变化

Bebop added 3 commits June 7, 2026 11:04
- 默认热键 Ctrl+Shift+F12,可在常规设置中开关和自定义
- 使用 RegisterHotKey/WM_HOTKEY 实现系统级别全局热键
- 支持按键录制控件,可自定义修饰键组合
- 热键设置持久化保存在 config.ini
- 支持中英文国际化
@
新增背景多帧动画支持,实现皮肤动态效果

- SkinFile: 背景存储改为 vector<Gdiplus::Image*> 支持多帧加载
- LoadMultiFramePng: 优先加载 background_N.png 序列,回退到单帧 background.png
- GetCurrentBackgroundFrame: 每次 DrawInfo 循环切换帧,实现动画
- vcxproj: 修复 print_compile_time.bat 预构建事件路径问题
@
@
新增动画定时器驱动皮肤帧刷新

- stdafx.h/TrafficMonitorDlg: 新增 ANIMATION_TIMER (66ms),独立于数据刷新率驱动背景重绘
- SkinFile: 帧切换改为基于 GetTickCount64 时间戳,动画帧率与监控间隔解耦
@
Bebop added 2 commits June 8, 2026 15:48
@
调整动画定时器间隔到 33ms (30fps),提升皮肤动画流畅度
@
@zhongyang219

Copy link
Copy Markdown
Owner

关于皮背景支持多帧动画的功能,我简单试了一下,在皮肤只有两帧图像的情况下,期望的效果应该是这两帧图像始终交替播放,但是实际的效果却是偶尔有一帧连续播放了两次。
CSkinFile::GetCurrentBackgroundFrame这个函数这里,我觉得只要每绘制一次frame_idx加1就行了,没有必要获取当前系统时间吧,这样才能保存所有帧是连续播放的,不会有跳帧的情况。帧的刷新时间间隔由定时器驱动即可,这样动画播放的时间间隔或许没有严格的10ms,但是对于这种小动画,播放速度并没有那么严格的要求。

另外,这里建议判断一下皮肤是否为多帧皮肤,只有多帧皮肤时才要定时刷新,避免影响原有的性能。

if (nIDEvent == ANIMATION_TIMER)
{
    Invalidate(FALSE);  // 驱动动画帧刷新
}

@zhongyang219

Copy link
Copy Markdown
Owner

另外,两个不同的功能最好能分两个pr提交

@Cyber0xFE Cyber0xFE closed this Jul 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants