▓_小田纯白 发表于 2016-7-21 20:47:18

Windows 托盘图标例子 walk 和 炫彩界面库混写

walk地址:https://github.com/lxn/walk炫彩官网:http://www.xcgui.com炫彩界面库:https://github.com/CodyGuo/xcgui效果图:http://77fkk5.com1.z0.glb.clouddn.com/upload/image/0fb3b82da07c11e586f1525400020562.png
http://77fkk5.com1.z0.glb.clouddn.com/upload/image/172396b1a07c11e586f1525400020562.png
http://77fkk5.com1.z0.glb.clouddn.com/upload/image/34f5bb84a07c11e586f1525400020562.png
http://77fkk5.com1.z0.glb.clouddn.com/upload/image/405a6334a07c11e586f1525400020562.png
http://77fkk5.com1.z0.glb.clouddn.com/upload/image/207f609ea07c11e586f1525400020562.png
http://77fkk5.com1.z0.glb.clouddn.com/upload/image/27e6bd59a07c11e586f1525400020562.png

代码:
package main
2.
3.import (
4.    "fmt"
5.    "log"
6.)
7.
8.import (
9.    xcgui "github.com/codyguo/xcgui/xc"
10.    "github.com/lxn/walk"
11.)
12.
13.var (
14.    hWindow xcgui.HWINDOW
15.    ni      *walk.NotifyIcon
16.)
17.
18.func main() {
19.    hWindow = xcgui.XWndCreate(0, 0, 0, 0, "炫彩界面库窗口", 0, xcgui.XC_WINDOW_STYLE_NOTHING)
20.
21.    // We load our icon from a file.
22.    icon, err := walk.NewIconFromFile("../../img/x.ico")
23.    if err != nil {
24.      log.Fatal(err)
25.    }
26.
27.    // Create the notify icon and make sure we clean it up on exit.
28.    ni, err = walk.NewNotifyIcon()
29.    if err != nil {
30.      log.Fatal(err)
31.    }
32.    defer ni.Dispose()
33.
34.    // Set the icon and a tool tip text.
35.    if err := ni.SetIcon(icon); err != nil {
36.      log.Fatal(err)
37.    }
38.    if err := ni.SetToolTip("托盘"); err != nil {
39.      log.Fatal(err)
40.    }
41.
42.    // When the left mouse button is pressed, bring up our balloon.
43.    ni.MouseDown().Attach(func(x, y int, button walk.MouseButton) {
44.      if button == walk.LeftButton {
45.            if err := ni.ShowCustom(
46.                "自定义消息",
47.                "这是一个带图标的自定义消息."); err != nil {
48.                log.Fatal(err)
49.            }
50.      } else {
51.            RunXCMenu()
52.      }
53.
54.    })
55.
56.    // 托盘图标默认为隐藏状态,需设置为显示。
57.    if err := ni.SetVisible(true); err != nil {
58.      log.Fatal(err)
59.    }
60.
61.    // Now that the icon is visible, we can bring up an info balloon.
62.    if err := ni.ShowInfo("托盘", "正在运行中."); err != nil {
63.      log.Fatal(err)
64.    }
65.
66.    // 注册菜单选择事件
67.    xcgui.XWndRegEventC(hWindow, xcgui.XWM_MENU_SELECT, xcgui.CallBack(OnWndMenuSelect))
68.
69.    // Run the message loop.
70.    xcgui.XRunXCGUI()
71.}
72.
73.func RunXCMenu() {
74.    var p xcgui.POINT
75.    xcgui.GetCursorPos(&p)
76.    hMenu := xcgui.XMenuCreate()
77.    xcgui.XMenuAddItem(hMenu, 101, "炫彩菜单101", 0, xcgui.MENU_STATE_FLAGS_POPUP)
78.    xcgui.XMenuAddItem(hMenu, 102, "炫彩菜单102", 0, 0)
79.    xcgui.XMenuAddItem(hMenu, 103, "炫彩菜单103", 0, 0)
80.    xcgui.XMenuAddItem(hMenu, 104, "炫彩菜单104", 0, 0)
81.    xcgui.XMenuAddItem(hMenu, 105, "炫彩菜单105", 0, 0)
82.    xcgui.XMenuAddItem(hMenu, 106, "退出程序", 0, 0)
83.
84.    xcgui.XMenuAddItem(hMenu, 1011, "炫彩菜单101-1", 101, 0)
85.    xcgui.XMenuAddItem(hMenu, 1012, "炫彩菜单101-2", 101, 0)
86.
87.    xcgui.SetForegroundWindow(xcgui.XWndGetHWND(hWindow))
88.    xcgui.XMenuPopup(hMenu, xcgui.XWndGetHWND(hWindow), p.X, p.Y, 0, 0)
89.}
90.
91.func OnWndMenuSelect(nID int, pBool bool) int {
92.    switch nID {
93.    case 1011:
94.      ni.ShowInfo("提示信息", "炫彩菜单101-1")
95.      xcgui.MessageBox(xcgui.XWndGetHWND(hWindow), "提示信息", "炫彩菜单101-1", xcgui.MB_ICONINFORMATION)
96.    case 1012:
97.      ni.ShowWarning("警告信息", "炫彩菜单101-2")
98.      xcgui.MessageBox(xcgui.XWndGetHWND(hWindow), "警告信息", "炫彩菜单101-2", xcgui.MB_ICONWARNING)
99.    case 102:
100.      ni.ShowError("错误信息", "炫彩菜单102")
101.      xcgui.MessageBox(xcgui.XWndGetHWND(hWindow), "错误信息", "炫彩菜单102", xcgui.MB_ICONERROR)
102.    case 106:
103.      ni.ShowMessage("退出程序", "正在退出程序...")
104.      ni.Dispose()
105.      walk.App().Exit(0)
106.      xcgui.XExitXCGUI()
107.    default:
108.      ni.ShowMessage("其他信息", "您选择的菜单:"+fmt.Sprint(nID))
109.      xcgui.MessageBox(xcgui.XWndGetHWND(hWindow), "其他信息", "您选择了其他菜单.", xcgui.MB_USERICON)
110.    }
111.
112.    return 0
113.}

以上信息来自:http://golangtc.com:8888/t/566b8de8b09ecc6de0000064


页: [1]
查看完整版本: Windows 托盘图标例子 walk 和 炫彩界面库混写