Skip to content

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 25 Oct 14:42
· 5 commits to main since this release

修复:拖动时边框一卡一卡

之前边框只在 100 ms 定时器里追窗口位置(10 Hz),且位置一变就全量重绘(读注册表取主题色 + 分配清零 3 MB 位图 + 逐像素 + 整面提交)。

现在照 PowerToys 的做法把两条路分开:

  • 注册 SetWinEventHook(EVENT_OBJECT_LOCATIONCHANGE) 与 EVENT_SYSTEM_MOVESIZEEND,
    回调里按 hwnd + OBJID_WINDOW 过滤,命中只做一次 SetWindowPos(SWP_NOSIZE | SWP_NOREDRAW)——只挪不画
  • 100 ms 定时器保留,仍负责重绘内容与校正;只有尺寸/粗细变化才回退完整重绘
  • 主题色改为缓存(启动与「重新加载配置」时读一次)

实测(同一脚本 A/B,每步移动 6px,共 400 步)

边框最大落后 完全跟上 拖动中 CPU
旧版 42 px 42/400 2.59% 单核
本版 0 px 400/400 1.73% 单核

Full Changelog: v0.3.0...v0.3.1


二创声明:本项目基于 chiimyen/TopPin(MIT, © 2026 chiimyen)二次创作,
并把 Microsoft PowerToys 的 AlwaysOnTop 模块的
边框外观 / 不透明度调节 / 游戏模式判定 / 拖动跟随策略移植过来(MIT, © Microsoft Corporation)。
C 实现为本分支自行编写,渲染管线不同(PowerToys 用 Direct2D,本项目用 GDI 位图 + 距离场抗锯齿)。
与 Microsoft 及 PowerToys 官方无任何关系。逐文件对照与许可全文见 ATTRIBUTION.md。