Skip to content

Releases: F3rcc/TopPin

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 25 Oct 23:31

Full Changelog: v0.4.0...v0.4.2

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 14:54

新增:托盘菜单「关闭通知 / 开启通知」

  • 一键静默所有气泡提示(启动提示、置顶/取消提示、配置重载提示、快捷键冲突提示)
  • 菜单文字随状态变化,开着时显示「关闭通知」,关掉后显示「开启通知」
  • 状态写回 TopPin.ini 的 Notify,重启后保持;也可以直接改这个键
  • 提权确认的对话框不受影响(那种提示不应该被静默)

当前完整功能

  • 热键可配置:Hotkey / OpacityUpHotkey / OpacityDownHotkey 全部写在 TopPin.ini
  • PowerToys 同款边框:跟随系统主题色、4px、随窗口圆角、DPI 自适应、RGB/粗细/圆角/开关均可配
  • 窗口不透明度调节:Ctrl+Win+= / Ctrl+Win+-,10% 一步,20%–100%,取消置顶自动还原
  • 游戏时不激活:独占全屏运行中不响应置顶
  • 拖动不掉帧:事件驱动跟随,实测落后 0px
  • 托盘菜单:切换置顶 / 已置顶窗口 / 取消全部 / 重新加载配置 / 打开配置文件 / 关闭通知 / 开机自启 / 管理员重启 / 退出

实测

  • Notify 切换 1 → 0 → 1 正常,写回后 ini 的注释与 UTF-16 BOM 均未被破坏
  • 重启后状态保持
  • 编译 gcc 零警告,单文件 66,048 字节

Full Changelog: v0.3.1...v0.4.0


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

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 25 Oct 14:42

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

之前边框只在 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。

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 14:10

新增

  • 置顶边框照 PowerToys AlwaysOnTop 重做:矩形取 DWMWA_EXTENDED_FRAME_BOUNDS 向外扩 thickness,
    圆环画在窗口外侧(只压 1px,不遮内容);圆角半径跟随窗口的 DWMWA_WINDOW_CORNER_PREFERENCE;
    默认跟随系统主题色、4px、100% 不透明、DPI 自适应。
  • 窗口不透明度调节:Ctrl+Win+= / Ctrl+Win+-,每次 10%,范围 20%–100%,
    只对已置顶窗口生效,取消置顶时还原原始的 layered/alpha/colorkey 状态。
  • 游戏时不激活:SHQueryUserNotificationState() == QUNS_RUNNING_D3D_FULL_SCREEN 时置顶热键不响应,默认开启。
  • 渲染用 GDI 位图 + 圆角矩形距离场算抗锯齿(PowerToys 用 Direct2D),只遍历四边边框带,中间像素跳过。
  • manifest 增加 PerMonitorV2 DPI 感知;热键支持 - = , . ; / [ ] \ ' 和反引号。

实测

  • 边框矩形 = 目标扩展边框四周各外扩 厚度的 DPI 缩放值(125% 缩放下 4px→5px),像素级对齐
  • 边框像素 = 系统主题色(#0078D7)
  • 不透明度 90/80/70/60% → alpha 229/204/178/153,与 255*p/100 一致

Full Changelog: v0.2.0...v0.3.0


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

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 13:39

新增

  • 热键可配置:不再写死 Ctrl+Alt+T,改 TopPin.ini 即可;托盘菜单可「打开配置文件」与「重新加载配置」。
  • 置顶边框高亮(首版):被钉住的窗口四周显示一圈彩色边框。

说明:v0.2.0 的边框是整圈压在窗口边缘的样式,已在 v0.3.0 替换为 PowerToys 同款外观。

Full Changelog: https://github.com/F3rcc/TopPin/commits/v0.2.0


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