Repository navigation
v0.3.1
修复:拖动时边框一卡一卡
之前边框只在 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。