找回密码
 加入
搜索
查看: 5379|回复: 4

[皮肤] 如何让托盘既支持左键双击显示窗口又支持右键单击选择菜单?【已解决】

  [复制链接]
发表于 2012-10-24 21:59:55 | 显示全部楼层 |阅读模式
本帖最后由 chen2j 于 2012-10-25 08:41 编辑

RT,我写了个代码,但是这两个为什么能执行一个,但是另一个就不行了呢?
这两个选择好像是靠这个语句选择的。
Opt("TrayOnEventMode", 0)


下面是我用帮助的代码组合的,需要怎么改才能两样都支持呢?

#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 623, 442, 192, 124)
GUISetState(@SW_SHOW)
Opt("TrayIconHide", 0)
Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 0)
TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "tray")
$prefsitem = TrayCreateItem("参数")
TrayCreateItem("")
$aboutitem = TrayCreateItem("关于")
TrayCreateItem("")
$exititem = TrayCreateItem("退出")
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $GUI_EVENT_MINIMIZE
                        GUISetState(@SW_HIDE, $Form1)
                        Opt("TrayIconHide", 0)
        EndSwitch
       
        $msg = TrayGetMsg()
        Select
                Case $msg = 0
                        ContinueLoop
                Case $msg = $prefsitem
                        MsgBox(64, "参数:", "系统版本:" & @OSVersion)
                Case $msg = $aboutitem
                        MsgBox(64, "关于:", "AutoIt3-托盘-例子.")
                Case $msg = $exititem
                        ExitLoop
        EndSelect
WEnd

Func tray()
        Opt("TrayIconHide", 1)
        GUISetState(@SW_SHOW, $Form1)
        WinActivate($Form1)
EndFunc   ;==>tray
发表于 2012-10-24 22:39:42 | 显示全部楼层
回复 1# chen2j

没看你的代码,贴个以前写的
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
 #include <Constants.au3>

TraySetClick(8)
Opt("TrayMenuMode", 3)
Opt("trayOnEventMode", 1)
TraySetOnEvent ($TRAY_EVENT_PRIMARYDOUBLE, "_showwin" ) 

$GUI = GUICreate("Form1",100,100)
$Button1 = GUICtrlCreateButton("确定", 5, 40, 80, 30)
GUISetState(@SW_SHOW)
$Eas = TrayCreateItem("关于")
TrayItemSetOnEvent($Eas, "TrayMsg")
$Exit = TrayCreateItem("退出")
TrayItemSetOnEvent($Exit, "TrayMsg")
While 1 ;窗体状态控制
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $Button1
                               MsgBox(0, "提示   " , "你点了窗体上的确定按钮",0,WinGetHandle("[active]"))
                Case $GUI_EVENT_MINIMIZE
                        GUISetState(@SW_HIDE, $GUI)
                                                
                Case $GUI_EVENT_CLOSE
                        Exit
                        
        EndSwitch
                                
WEnd
Func TrayMsg() ;系统托盘
        Switch @TRAY_ID
                Case $Eas
                        MsgBox(64, "关于", "这里是关于的内容")
                Case $Exit
                        Exit
        EndSwitch
        EndFunc   ;==>TrayMsg
        
        Func _showwin()
                GUISetState(@SW_SHOW, $GUI)
                Return
        EndFunc
发表于 2012-10-24 22:52:30 | 显示全部楼层
回复 1# chen2j


    楼主又是成了成功一半的典型.
你的代码稍稍修改一二就可以了.
$msg = TrayGetMsg()
                Select
                        Case $msg = $TRAY_EVENT_PRIMARYDOUBLE
                        tray()
 楼主| 发表于 2012-10-25 08:40:46 | 显示全部楼层
回复 3# user3000

原来可以这么用呢,谢谢啦!
发表于 2012-11-16 11:48:02 | 显示全部楼层
这个也有用,记号学习。感谢提供源码!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-27 10:07 , Processed in 0.068860 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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