YStudio Y++

托盘 + 热键最小例

Y++ / YStudio 开发文档 · 一点滴

最小可运行组合:托盘常驻 + 全局热键显示/退出。更完整的托盘交互见安装目录中的示例工程。

准备

  • 将 tray.ico 放到工程 资源/(或改下面路径)
  • 修饰键:Ctrl=2,Shift=4,Alt=1(可相加);键码 A=65 等与 Windows VK 一致

代码(可粘到 main.yc)

托盘类 g_托盘
整数 g_热键显示 = 0
整数 g_热键退出 = 0
逻辑 g_强制退出 = 假

函数 热键显示窗口 () {
    主窗口.显示()
    激活窗口()
}

函数 热键退出程序 () {
    g_强制退出 = 真
    关闭()
}

函数 托盘单击 () {
    主窗口.显示()
    激活窗口()
}

函数 主窗口.创建完毕 () {
    文本 图标 = "资源\\tray.ico"
    如果 (文件存在(图标) == 假) {
        输出("请放入 资源/tray.ico")
        返回 ()
    }
    g_托盘.单击(&托盘单击)
    g_托盘.置图标(图标)
    g_托盘.显示("托盘+热键最小例")
    // Ctrl+Shift+S 显示;Ctrl+Shift+Q 退出
    g_热键显示 = 注册热键(6, 83, &热键显示窗口)
    g_热键退出 = 注册热键(6, 81, &热键退出程序)
}

函数 主窗口.即将关闭 () {
    如果 (g_强制退出 == 假) {
        主窗口.隐藏()
        关闭(假)
        返回 ()
    }
    如果 (g_热键显示 != 0) {
        注销热键(g_热键显示)
    }
    如果 (g_热键退出 != 0) {
        注销热键(g_热键退出)
    }
    注销全部热键()
    g_托盘.销毁()
}

行为

操作 效果
关主窗口 藏到托盘(不退出)
托盘单击 / Ctrl+Shift+S 显示主窗口
Ctrl+Shift+Q 真正退出并清理热键/托盘

热键 API 说明见支持库「热键」;托盘见「托盘类」。