找回密码
 加入
搜索
查看: 4640|回复: 7

[AU3基础] 这个工具栏的事件怎么做

  [复制链接]
发表于 2011-8-11 13:40:46 | 显示全部楼层 |阅读模式
在论坛上找到这个源码。可是不知道怎么触发工具栏上的按钮事件。。
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TabConstants.au3>
#include <GuiToolBar.au3>
#include <GuiImageList.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>


;工具栏
Global Enum $ToolBar_Open = 1000, $ToolBar_Close, $ToolBar_Extract, $ToolBar_View, $ToolBar_Test, $ToolBar_Decrypt

;Opt("GUIOnEventMode", 1) ;GUI事件响应模式
Opt("GUIEventOptions", 1) ;修改特殊的 GUI 函数的返回值类型 1=立即通知
;Opt("WinTitleMatchMode",2);标题的任意子串皆可匹配
Opt("GUICloseOnESC", 0);在按下 ESC 时不退出
#region ### START Koda GUI section ### Form=
$hGUI = GUICreate("Form1", 623, 442, 192, 124)
Global $MSG_NOTIFY
$hToolBar = _GUICtrlToolbar_Create($hGUI, $TBSTYLE_FLAT)
$hToolBar_Image = _GUIImageList_Create(32, 32, 5, 3)
;_GUIImageList_AddIcon($hToolBar_Image, @SystemDir & "\Sealin.DLL", 1, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 9, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 4, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 5, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 6, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 7, True)
_GUICtrlToolbar_SetImageList($hToolBar, $hToolBar_Image)

$OpenString = _GUICtrlToolbar_AddString($hToolBar, "系统工具")
$CloseString = _GUICtrlToolbar_AddString($hToolBar, "常用软件")
;GUICtrlSetOnEvent(-1,"_TabButton2")
$ExtractString = _GUICtrlToolbar_AddString($hToolBar, "垃圾清理")
$ViewString = _GUICtrlToolbar_AddString($hToolBar, "  系统安全     ")
$TestString = _GUICtrlToolbar_AddString($hToolBar, "   Test   ")

_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_Open, 0, $OpenString) ;窗口管理
_GUICtrlToolbar_AddButtonSep($hToolBar)
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_Close, 1, $CloseString)
_GUICtrlToolbar_AddButtonSep($hToolBar)
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_Extract, 2, $ExtractString)
_GUICtrlToolbar_AddButtonSep($hToolBar)
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_Test, 5, $TestString)
_GUICtrlToolbar_AddButtonSep($hToolBar)
_GUICtrlToolbar_AddButton($hToolBar, $ToolBar_View, 3, $ViewString)
_GUICtrlToolbar_SetButtonState($hToolBar, $ToolBar_Decrypt, $TBSTATE_INDETERMINATE)
$t = GUICtrlCreateLabel('', 2, 55, 623, 1, $SS_ETCHEDHORZ)


;$la=GUICtrlCreateLabel("",2,50,25,623,$SS_ETCHEDHORZ)

;GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
;If $CmdLine[0] > 0 Then          ; 每个事件都需建这个东东
;       _TabButton2($CmdLine[1])  ; 关联第95行
;EndIf
$Button1 = GUICtrlCreateButton("Button1", 232, 336, 113, 33)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        Exit
                        
        EndSwitch
WEnd
发表于 2011-8-11 20:56:33 | 显示全部楼层
本帖最后由 水木子 于 2011-8-11 21:07 编辑

不知道你要的是什么事件!

#include <Constants.au3>
#include <GuiToolbar.au3>
#include <GuiImageList.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>

Global $iButtonNum = 5
Global $iCmdID
Global $iWidth = 80, $iHeight = 80

$MyGui = GUICreate("可自定义图标的工具栏", 600, 450, -1, -1, 13565952, $WS_EX_ACCEPTFILES)
$hToolBar = _GUICtrlToolbar_Create($MyGui, $TBSTYLE_WRAPABLE)
$hToolBar_Image = _GUIImageList_Create(32, 32, 5, 3)
_GUICtrlToolbar_SetImageList($hToolBar, $hToolBar_Image)

For $i = 0 To $iButtonNum
        _GUIImageList_AddIcon($hToolBar_Image, @SystemDir & "\shell32.dll", 100 + $i, True)
        $sButtonText = _GUICtrlToolbar_AddString($hToolBar, "   按钮 - " & $i + 1 & '   ')
        _GUICtrlToolbar_AddButton($hToolBar, 1000 + $i, $i, $sButtonText)
Next
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")

Do
Until GUIGetMsg() = -3

Func _WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam)
        Local $tNMHDR, $event, $hwndFrom, $code, $i_idNew, $dwFlags, $lResult, $idFrom, $i_idOld
        Local $tNMTOOLBAR, $tNMTBHOTITEM
        $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
        $hwndFrom = DllStructGetData($tNMHDR, "hWndFrom")
        $idFrom = DllStructGetData($tNMHDR, "IDFrom")
        $code = DllStructGetData($tNMHDR, "Code")
        Switch $hwndFrom
                Case $hToolBar
                        Switch $code
                                Case -2
                                        If $iCmdID Then
                                                MsgBox(0, 'CmdID = ' & $iCmdID, 'ButtonText = ' & _GUICtrlToolbar_GetButtonText($hToolBar, $iCmdID))
                                        EndIf
                                        $iCmdID = ''
                                Case $TBN_HOTITEMCHANGE
                                        $tNMTBHOTITEM = DllStructCreate($tagNMTBHOTITEM, $lParam)
                                        $i_idOld = DllStructGetData($tNMTBHOTITEM, "idOld")
                                        $i_idNew = DllStructGetData($tNMTBHOTITEM, "idNew")
                                        $iCmdID = $i_idNew
                        EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_NOTIFY
 楼主| 发表于 2011-8-11 21:05:17 | 显示全部楼层
回复 2# 水木子


    就是这个。。谢谢了。。如果可以说明一下就OK了。。函数这里看不懂
发表于 2011-8-11 21:11:16 | 显示全部楼层
本帖最后由 水木子 于 2011-8-11 21:13 编辑

回复 3# udbghdto

其实也没什么好注释的,因为都是比较容易看懂的。
前面部分是创建按钮,后面是注册按钮各种消息。
-2则是鼠标按下按钮后弹起,明白了吧!
变量 $iButtonNum 是创建按钮的数量。
 楼主| 发表于 2011-8-12 09:18:23 | 显示全部楼层
回复 4# 水木子


    为什么在工具栏空白处按下鼠标都会MsgBox。。可不可以。按下不同的按钮运行不同的函数
发表于 2011-8-13 16:25:37 | 显示全部楼层
回复 5# udbghdto

#include <Constants.au3>
#include <GuiToolbar.au3>
#include <GuiImageList.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>

Global $iButtonNum = 5
Global $iCmdID
Global $iWidth = 80, $iHeight = 80

$MyGui = GUICreate("可自定义图标的工具栏", 600, 450, -1, -1, 13565952, $WS_EX_ACCEPTFILES)
$hToolBar = _GUICtrlToolbar_Create($MyGui, $TBSTYLE_WRAPABLE)
$hToolBar_Image = _GUIImageList_Create(32, 32, 5, 3)
_GUICtrlToolbar_SetImageList($hToolBar, $hToolBar_Image)

For $i = 0 To $iButtonNum
        _GUIImageList_AddIcon($hToolBar_Image, @SystemDir & "\shell32.dll", 100 + $i, True)
        $sButtonText = _GUICtrlToolbar_AddString($hToolBar, "   按钮 - " & $i + 1 & '   ')
        _GUICtrlToolbar_AddButton($hToolBar, 1000 + $i, $i, $sButtonText)
Next
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")

Do
Until GUIGetMsg() = -3

Func _WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam)
        Local $tNMHDR, $event, $hwndFrom, $code, $i_idNew, $dwFlags, $lResult, $idFrom, $i_idOld
        Local $tNMTOOLBAR, $tNMTBHOTITEM
        $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
        $hwndFrom = DllStructGetData($tNMHDR, "hWndFrom")
        $idFrom = DllStructGetData($tNMHDR, "IDFrom")
        $code = DllStructGetData($tNMHDR, "Code")
        Switch $hwndFrom
                Case $hToolBar
                        Switch $code
                                Case -2
                                        If $iCmdID Then
                                                ;MsgBox(0, 'CmdID = ' & $iCmdID, 'ButtonText = ' & _GUICtrlToolbar_GetButtonText($hToolBar, $iCmdID))
                                                Switch $iCmdID
                                                        Case 1000
                                                                MsgBox(0, '', 1)
                                                        Case 1001
                                                                MsgBox(0, '', 2)
                                                        Case 1002
                                                                MsgBox(0, '', 3)
                                                EndSwitch                                                
                                        EndIf
                                        $iCmdID = ''
                                Case $TBN_HOTITEMCHANGE
                                        $tNMTBHOTITEM = DllStructCreate($tagNMTBHOTITEM, $lParam)
                                        $i_idOld = DllStructGetData($tNMTBHOTITEM, "idOld")
                                        $i_idNew = DllStructGetData($tNMTBHOTITEM, "idNew")
                                        $iCmdID = $i_idNew
                        EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_NOTIFY

评分

参与人数 1金钱 +30 收起 理由
powerofos + 30

查看全部评分

发表于 2011-8-18 17:36:15 | 显示全部楼层
高手好都来了,谢谢
发表于 2011-8-20 10:18:40 | 显示全部楼层
代码学习了.....
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 01:49 , Processed in 0.080335 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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