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.pnghttp://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]