找回密码
 加入
搜索
查看: 3767|回复: 12

[交流] [已解决]为什么用了炫彩皮肤后点击托盘图标的事件无效

  [复制链接]
发表于 2016-4-12 22:13:56 | 显示全部楼层 |阅读模式
本帖最后由 a62105400 于 2016-4-13 18:12 编辑
#region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=n
#endregion ;**** 参数创建于 ACNWrapper_GUI ****
#include "XCGUI_Fun.au3"
#NoTrayIcon

Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode",1)   ; 默认菜单项目 (脚本暂停中/退出)(Script Paused/Exit) 将不会显示. 

TraySetClick(16)    ; 只有单击第二个鼠标按键(默认右键)才会显示托盘菜单.

TrayCreateItem("信息")
TrayItemSetOnEvent(-1, "ShowInfo")

TrayCreateItem("")

TrayCreateItem("退出")
TrayItemSetOnEvent(-1, "ExitScript")

TraySetState()



XInitXCGUI()
$create = XWnd_Create("500", "500", "480", "300", "窗口测试", 47)
$btn1 = XBtn_Create("20", "60", "165", "65", "炫彩按钮", $create)
$font = XFont_Create2("黑体", 18, True, False, False, False)
XEle_SetTextColor($btn1, 0x0000ff, 255)
XEle_SetFont($btn1, $font)
$btn2 = XBtn_Create("180", "260", "75", "25", "退出程序", $create)
XEle_RegEventC($btn2, "btn2")
XWnd_ShowWindow($create)
XRunXCGUI()
Func ShowInfo()
    MsgBox(0,"Info","托盘 OnEvent 模式演示")
EndFunc   ;==>ShowInfo


Func ExitScript()
    Exit
EndFunc   ;==>ExitScript



Func btn2($bh)
        xquit_acn($create)
EndFunc   ;==>btn2
用TrayItemSetOnEvent 或者TrayGetMsg ( )都不能响应托盘事件


已解决  4#解决方法
发表于 2016-4-13 08:21:02 | 显示全部楼层
回复 1# a62105400


    目前还没找到让炫彩的控件和AU3的控件同时存在的方法,易语言已经可实现了,AU3我研究到现在也没研究出方法,不过你可以使用炫彩创建托盘菜单,等有时间我写个例子发到论坛
 楼主| 发表于 2016-4-13 17:12:58 | 显示全部楼层
是可以用炫彩创建菜单,但是 怎么触发。。。
        $xmenu=XMenu_Create()
        XMenu_AddItem($xmenu,101,"",0,$XE_MENU_POPUP)
 楼主| 发表于 2016-4-13 18:08:28 | 显示全部楼层
解决了  在 XRunXCGUI() 前添加循环就可以都响应了
      While 1
                Sleep(10)
        WEnd
发表于 2016-4-13 19:52:07 | 显示全部楼层
回复 3# a62105400


    关于怎么触发,炫彩助手里有很多例子
 楼主| 发表于 2016-4-13 19:55:33 | 显示全部楼层
回复 5# guland
  怎么注册托盘点击的事件,求个例子,助手上的例子有点少
发表于 2016-4-14 23:08:09 | 显示全部楼层
回复 6# a62105400

你可以参考下面的代码,这个例子已被上传到炫彩助手中
#region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=n
#endregion ;**** 参数创建于 ACNWrapper_GUI ****

Opt("TrayMenuMode", 1) ;设置不显示默认菜单项目 (脚本暂停中/退出)
#include "XCGUI_Fun.au3"
#include <Constants.au3>

XInitXCGUI()
$create = XWnd_Create(0, 0, 600, 500, "窗口测试", 47)
XWnd_RegEventC($create, "OnWndMenuSelect", $XWM_MENU_SELECT)
$btn2 = XBtn_Create("400", "4", "75", "25", "退出程序", $create)
XEle_RegEventC($btn2, "btn2")
XWnd_ShowWindow($create)

While 1
        Switch TrayGetMsg()
                Case $TRAY_EVENT_SECONDARYDOWN ;鼠标右键被点击
                        _tray()
        EndSwitch
WEnd

Func btn2($bh)
        xquit_acn($create)
EndFunc   ;==>btn2
Func _tray()
        $traypos = MouseGetPos()
        $hMenu = XMenu_Create() ;创建菜单.默认弹出菜单窗口关闭后自动销毁
        XMenu_AddItem($hMenu, 201, "1", $XC_ID_ROOT, 0) ;添加菜单项
        XMenu_AddItem($hMenu, 202, "2", $XC_ID_ROOT, 0)
        XMenu_AddItem($hMenu, 203, "3", $XC_ID_ROOT, 0)
        XMenu_AddItem($hMenu, 2031, "3-1", 203, 0)
        ;弹出菜单
        XMenu_Popup($hMenu, XWnd_GetHWND($create), $traypos[0], $traypos[1], 0, 0)
EndFunc   ;==>_tray
Func OnWndMenuSelect($nID)
        MsgBox(0, "", "选择的菜单ID为: " & $nID, -1, XWnd_GetHWND($create))
EndFunc   ;==>OnWndMenuSelect
 楼主| 发表于 2016-4-15 07:13:53 | 显示全部楼层
回复 7# guland


    谢谢! 现在有新的问题,是关于list列表的,我给托盘按键设置对list列表元素改变字体颜色,改是改成功了,鼠标滚轮滑下去后,再回来,颜色就变回原来的样子,有没有办法让字的颜色一直是我想换的?
#region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=n
#endregion ;**** 参数创建于 ACNWrapper_GUI ****

Opt("TrayMenuMode", 3) ;设置不显示默认菜单项目 (脚本暂停中/退出)
#include "XCGUI_Fun.au3"
#include <Constants.au3>

XInitXCGUI()
$create = XWnd_Create(0, 0, 600, 500, "窗口测试", 47)
XWnd_RegEventC($create, "OnWndMenuSelect", $XWM_MENU_SELECT)
$btn2 = XBtn_Create("400", "4", "75", "25", "退出程序", $create)
XEle_RegEventC($btn2, "btn2")
$XList = XList_Create("20", "40", "440", "400", $create)  ;创建列表元素
XList_EnableDragChangeColumnWidth($XList, 0)
XList_AddColumn($XList, 100)  ;设置列宽
XList_AddColumn($XList, 105)
XList_AddColumn($XList, 105)
$XAm = XAdapterMap_Create()  ;创建数据适配器,单列数据
XList_BindAdapterHeader($XList, $XAm)  ;绑定数据适配器
XAdapterMap_AddItemText($XAm, "name", "111")  ;设置列名称
XAdapterMap_AddItemText($XAm, "name2", "222")
XAdapterMap_AddItemText($XAm, "name3", "333")
$XA = XAdapterTable_Create()  ;创建列表框元素数据适配器
XList_BindAdapter($XList, $XA)  ;绑定数据适配器
XAdapterTable_AddColumn($XA, "name")  ;添加数据列
XAdapterTable_AddColumn($XA, "name2")
XAdapterTable_AddColumn($XA, "name3")
For $i=0 To 200 Step 1
         $ii=$i+1
          If StringLen($ii)<2 Then $ii="0"&$ii
          If StringLen($ii)<3 Then $ii="0"&$ii
           XAdapterTable_AddItemTextEx($XA, "name", $ii)
       XAdapterTable_SetItemText($XA, $i, 1, "在线")  ;设置项数据
           XAdapterTable_SetItemText($XA, $i, 2, "是")  ;设置项数据
  Next
XWnd_ShowWindow($create)

While 1
        Switch TrayGetMsg()
                Case $TRAY_EVENT_SECONDARYDOWN ;鼠标右键被点击
                        _tray()
        EndSwitch
WEnd

Func btn2($bh)
        xquit_acn($create)
        EndFunc   ;==>btn2
        
Func _tray()
        $traypos = MouseGetPos()
        $hMenu = XMenu_Create() ;创建菜单.默认弹出菜单窗口关闭后自动销毁
        XMenu_AddItem($hMenu, 201, "改变颜色", $XC_ID_ROOT, 0) ;添加菜单项
        ;弹出菜单
        XMenu_Popup($hMenu, XWnd_GetHWND($create), $traypos[0], $traypos[1], 0, 0)
EndFunc   ;==>_tray
Func OnWndMenuSelect($nID)
 For $i=0 To 15 Step 1     
XShapeText_SetTextColor(XList_GetTemplateObject($XList,$i,1),0xFF00FF,255)
XShapeText_SetTextColor(XList_GetTemplateObject($XList,$i,2),0xFF00FF,255)
XShapeText_SetTextColor(XList_GetTemplateObject($XList,$i,3),0xFF00FF,255)
Next
XEle_RedrawEle($XList, 1)
EndFunc   ;==>OnWndMenuSelect
发表于 2016-4-16 14:06:55 | 显示全部楼层
回复 8# a62105400


    我问过炫彩的技术员了,这个问题暂时没办法 ...  列表里的东西都是现画的,翻出去就没了,我现在只能做到保存列表按钮的选择状态,
发表于 2016-4-19 11:13:36 | 显示全部楼层
本帖最后由 chzj589 于 2016-4-19 11:25 编辑

回复 1# a62105400

响应是响应了,但再次点击托盘时就出现错误
七楼才是正解
发表于 2016-4-20 20:26:22 | 显示全部楼层
回复 8# a62105400


    我找到了一种办法可以保存字体颜色,使用到了下面两个函数
XList_SetItemData  设置项用户数据
XList_GetItemData  获取项用户数据
请看下面代码
#region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=n
#endregion ;**** 参数创建于 ACNWrapper_GUI ****
#include "XCGUI_Fun.au3"
XInitXCGUI()
$create = XWnd_Create("500", "500", "500", "500", "窗口测试", 47)
$XList = XList_Create("20", "40", "440", "400", $create)
XList_SetItemHeightDefault($XList, 35, 40) ;设置项未选中高度,选中高度
$ggg = XList_SetItemTemplateXML($XList, @ScriptDir & "\List_Item.xml") ;加载列表模板
XList_AddColumn($XList, 100) ;设置列宽度
XList_AddColumn($XList, 100)
XList_AddColumn($XList, 100)
$XAm = XAdapterMap_Create()
XList_BindAdapterHeader($XList, $XAm)
$XA = XAdapterTable_Create()
XList_BindAdapter($XList, $XA)
XAdapterTable_AddColumn($XA, "name")
XAdapterTable_AddColumn($XA, "name2")
XAdapterTable_AddColumn($XA, "name3")
For $i = 0 To 20
        XAdapterTable_AddItemTextEx($XA, "name", "ListBox")
        XAdapterTable_SetItemText($XA, $i, 1, "ListBox-" & $i & "-1")
        XAdapterTable_SetItemText($XA, $i, 2, "ListBox-" & $i & "-2")
Next
XEle_RegEventC1($XList, "_OnListTemplateCreateEnd", $XE_LIST_TEMP_CREATE_END, "int;int") ;注册列表事件
$btn2 = XBtn_Create("400", "460", "75", "25", "退出程序", $create)
$btn3 = XBtn_Create("300", "460", "75", "25", "修改颜色", $create)
XEle_RegEventC($btn2, "btn2")
XEle_RegEventC($btn3, "btn3")
XWnd_ShowWindow($create)

XRunXCGUI()

Func _OnListTemplateCreateEnd($hEle, $pItem)
        $a = _list_item_i() ;获得 list_item_i 数据结构
        CopyMemory($a, $pItem)
        $text = XList_GetTemplateObject($XList, DllStructGetData($a, 1), 0) ;获取句柄
        $pd = XC_IsHXCGUI($text, $XC_SHAPE_TEXT) ;判断获取的句柄是否为文本
        If $pd = True Then
                $fsts = XList_GetItemData($XList, DllStructGetData($a, 1), 0) ;获取项用户数据
                XShapeText_SetTextColor($text, $fsts, 255) ;设置文本颜色
        EndIf
EndFunc   ;==>_OnListTemplateCreateEnd
Func btn3($bh)
        For $i = 0 To 3
                XShapeText_SetTextColor(XList_GetTemplateObject($XList, $i, 0), 0xFF00FF, 255) ;设置文本颜色
                XList_SetItemData($XList, $i, 0, 0xFF00FF) ;设置项用户数据
        Next
        XEle_RedrawEle($XList, 1)
EndFunc   ;==>btn3
Func btn2($bh)
        xquit_acn($create)
EndFunc   ;==>btn2
 楼主| 发表于 2016-5-4 14:18:20 | 显示全部楼层
回复 11# guland
我的UDF版本: v2.1 里没有  _list_item_i()   XEle_RegEventC1() 调用参数的数量错误
发表于 2016-5-4 19:43:40 | 显示全部楼层
回复 12# a62105400


    更新一下UDF就有了,下载定置贴中的炫彩助手,里面有UDF更新工具
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 12:16 , Processed in 0.077659 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表