找回密码
 加入
搜索
查看: 16708|回复: 23

[GUI管理] 关于工具栏(已解决)

 火.. [复制链接]
发表于 2011-4-1 21:38:50 | 显示全部楼层 |阅读模式
本帖最后由 lxsh010 于 2011-4-4 01:56 编辑

论坛大大们:你们好

菜鸟在这里求助,想在一款软件 写一个工具栏,像IE浏览器,像资源管理器那样,,应该怎么做?

期待高手显身帮忙。

谢谢
 楼主| 发表于 2011-4-1 21:53:10 | 显示全部楼层


各位兄弟们,这个是我正在写的工具箱。

系统工具 和常用软件,,还在那儿太难看了。

所以,想 把他们写成工具栏的 模样,但无从下手。。

真诚等待中。。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-4-2 00:03:33 | 显示全部楼层
你上面排不是?
发表于 2011-4-2 08:21:03 | 显示全部楼层
#include <GUIToolbar.au3>
_GUICtrlToolbar_Create
 楼主| 发表于 2011-4-2 18:56:45 | 显示全部楼层
回复 4# pusofalse

非常感谢P版。谢谢你的提示,我终于找到相关的代码。界面算是折腾出来了,,可事件如何注册呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2011-4-2 18:59:31 | 显示全部楼层
本帖最后由 lxsh010 于 2011-4-2 19:10 编辑
#include <GuiConstantsEx.au3>
#include <GuiTab.au3>
#include <IE.au3>
#include "ModernMenuRaw.au3"
#Include <Date.au3>
#include <Clipboard.au3>
#include <ScreenCapture.au3>
#include <GuiToolBar.au3>
#Include <GuiImageList.au3>

Dim $cleanform,$clean1,$clean2,$clean3,$ShowForm, _
$tqybform,$calenForm,$DIYForm,$speedForm,$musicForm,$pptvForm,$SFCForm,$systemFrom, _
$Timecheck1,$TimecheckForm,$sys4,$sys5,$sys6,$sys7,$sys8, _
$kshutdown01,$shutstart,$shuttime,$leftTime,$date,$result,$type,$kshutdownform,$BS_CENTER, _
$MoveFile1,$Tab1Check1,$Tab1Check2,$Tab1Check3,$Tab1Check4,$Tab1Check5,$Tab1Check6,$MoveFile2, _
$Tab3Check1,$Tab3Check2,$Tab3Check3, $Tab3Check4, $Tab3Check5, $Tab3Check6,$Tab3Check7,$Tab3Check8, _
$Tab3Check9,$Tab3Check10,$tab1combo1,$re2,$reg3,$re1,$MoveForm,$Tab_6_Radio_[3];声明变量

Global Const $TRAY_EVENT_PRIMARYDOUBLE = -13


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



$skins=@SystemDir & "\seafile\QQ2009.she"   ;皮肤
$Dll = DllOpen(@SystemDir & "\seafile\Skin.dll") 
DllCall($Dll, "int", "SkinH_AttachEx", "str", $skins, "str", "mhgd") 
DllCall($Dll, "int", "SkinH_SetAero", "int",1)  ;1玻璃效果

Opt("GUIOnEventMode", 1) ;GUI事件响应模式
Opt("GUIEventOptions",1) ;修改特殊的 GUI 函数的返回值类型 1=立即通知
;Opt("WinTitleMatchMode",2);标题的任意子串皆可匹配
Opt("GUICloseOnESC",0);在按下 ESC 时不退出

$HwndC = WinGetHandle("Program Manager");桌面也是一个窗口,标题为Program Manager
$g_szVersion = "拾零装机工具箱"   ;不重复运行本程序
If WinExists($g_szVersion) Then ;检测是否有同一程序运行
        MsgBox(48, "提示 - 拾零装机工具箱", "温馨提示:[拾零装机工具箱]已在运行了,请勿重复运行! ",5,$HwndC)
        Exit ; 此脚本已经运行了
EndIf

$Gui_w = 360
$gui_h = 420
$hGUI = GUICreate("拾零装机工具箱", $Gui_w, $gui_h, @DesktopWidth - $Gui_w, Default, Default, Default)
$guiRect = _WinAPI_GetWindowRect($hGUI)
GUISetFont(9.7, 0, 0, "Tahoma") ;窗口默认字体

;--------------------工具栏------------
Global $MSG_NOTIFY
$hToolBar = _GUICtrlToolbar_Create($hGUI, $TBSTYLE_FLAT)
$hToolBar_Image = _GUIImageList_Create(32, 32, 5, 3)
_GUIImageList_AddIcon($hToolBar_Image, @SystemDir & "\seafile\Sealin.DLL", -2,True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 2, True)
_GUIImageList_AddIcon($hToolBar_Image, @ScriptDir & "\sicon.DLL", 3, 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)
_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)
  
If $CmdLine[0] > 0 Then          ; 每个事件都需建这个东东
        _TabButton2($CmdLine[1])  ; 关联第95行
EndIf   

;------------标签设置--------------
$hTab = GUICtrlCreateTab(2, 80, 376, 400, BitOR($TCS_BOTTOM, $TCS_FIXEDWIDTH, $TCS_BUTTONS))
_GUICtrlTab_SetItemSize($hTab, 1, 1)
DirCreate (@ProgramFilesDir & "\Sealin")

Global $hTray = ControlGetHandle('[CLASS:Shell_TrayWnd]', '', 'TrayNotifyWnd1')
Global $trayRect = _WinAPI_GetWindowRect($hTray)


;GUICtrlCreatePic(@SystemDir & "\seafile\XLOGO.JPG", 0, 0, 380, 60)
$Label1 = GUICtrlCreateLabel(" Sealin Home ", 20, 404, 80, 30, 0)
GUICtrlSetTip($Label1, " 拾零技术 永不止步 ")
GUICtrlSetCursor($Label1, 0)

GuiCtrlCreatePic(@ProgramFilesDir &"\Sealin\XLOGO.JPG",10,10, 360,60)
GUICtrlCreateGroup ("", 10, 85, 340, 140)
GUICtrlCreateGroup ("", 10, 240, 340, 140)





;-----------------------------GUI菜单---------------------------------
$MuF1 = GUICtrlCreateMenu("控制面板(&C)")  ;--------控制面板-------


$MuF2 = GUICtrlCreateMenu("在线贴士(&R)")  ;-------在线小贴士---------



;=============================GUI界面-第一分页=============================

$Tab1 = GUICtrlCreateTabItem("系统工具")

$hGUI001 = GUICtrlCreateRadio("Word Wrong 修复", 40, 110, 130, 25, 0)
GUICtrlSetOnEvent(-1, "_Wordbug")

;------------------------第二分页-------------------------

$Tab2 = GUICtrlCreateTabItem("常用软件")

$Button21 = GUICtrlCreateRadio("电脑时间校准工具", 40, 110, 130, 25, 0)
GUICtrlSetTip(-1, " 请确保上网状态,再进行时间校准 ")
GUICtrlSetOnEvent(-1,"_Timecheck")
$Button22 = GUICtrlCreateRadio("软件快速卸载工具", 40, 145, 130, 25, 0)
GUICtrlSetOnEvent(-1,"_uninstall")


 ;为指定控件GUI的点击行为定义一个用户函数 
GUICtrlSetOnEvent($Label1, "Gui")

GUISetOnEvent($GUI_EVENT_CLOSE, "_Quit")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "TrayClick")
GUISetOnEvent($GUI_EVENT_RESTORE, "restore")
GUISetState()
WinMove("", "", @DesktopWidth / 2 - $Gui_w / 2, Default, Default, Default, 2)



GUICtrlSetOnEvent(-1, "_Quit") 
_TrayIconSetState();显示托盘
$nTaskBarCreated = DllCall("user32.dll", "uint", "RegisterWindowMessageA", "str", "TaskbarCreated")
GUIRegisterMsg($nTaskBarCreated[0], "RecreateIcons")  ;防托盘图标被删

While 1        
        
        Sleep(900)
WEnd



Func _TabButton1() ;系统工具事件
        GUICtrlSetState($Tab1, $GUI_SHOW)
EndFunc

Func _TabButton2() ;常用软件事件
        GUICtrlSetState($Tab2, $GUI_SHOW)        
EndFunc
P版大大,再往下,怎么注册,我就真的不懂了!!!恳请赐教
发表于 2011-4-2 21:02:56 | 显示全部楼层
GUIToolbar 这个还没用过。
发表于 2011-4-3 05:07:44 | 显示全部楼层
好东西,谢谢分享。。可不可以弄成竖排呢?
 楼主| 发表于 2011-4-3 09:35:08 | 显示全部楼层
唉,高手们都见首不见尾,不肯来帮帮我们这些菜鸟们。。
发表于 2011-4-3 11:00:36 | 显示全部楼层
学习一下吧。。。
发表于 2011-4-3 16:51:34 | 显示全部楼层
试试看,
#include <GuiConstantsEx.au3>
#include <GuiTab.au3>
#include <IE.au3>
;#include "ModernMenu.au3"
#Include <Date.au3>
#include <Clipboard.au3>
#include <ScreenCapture.au3>
#include <GuiToolBar.au3>
#Include <GuiImageList.au3>

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TabConstants.au3> 

Dim $cleanform,$clean1,$clean2,$clean3,$ShowForm, _
$tqybform,$calenForm,$DIYForm,$speedForm,$musicForm,$pptvForm,$SFCForm,$systemFrom, _
$Timecheck1,$TimecheckForm,$sys4,$sys5,$sys6,$sys7,$sys8, _
$kshutdown01,$shutstart,$shuttime,$leftTime,$date,$result,$type,$kshutdownform,$BS_CENTER, _
$MoveFile1,$Tab1Check1,$Tab1Check2,$Tab1Check3,$Tab1Check4,$Tab1Check5,$Tab1Check6,$MoveFile2, _
$Tab3Check1,$Tab3Check2,$Tab3Check3, $Tab3Check4, $Tab3Check5, $Tab3Check6,$Tab3Check7,$Tab3Check8, _
$Tab3Check9,$Tab3Check10,$tab1combo1,$re2,$reg3,$re1,$MoveForm,$Tab_6_Radio_[3];声明变量

Global Const $TRAY_EVENT_PRIMARYDOUBLE = -13


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


$skins=@SystemDir & "\seafile\QQ2009.she"   ;皮肤
$Dll = DllOpen(@SystemDir & "\seafile\Skin.dll") 
DllCall($Dll, "int", "SkinH_AttachEx", "str", $skins, "str", "mhgd") 
DllCall($Dll, "int", "SkinH_SetAero", "int",1)  ;1玻璃效果

Opt("GUIOnEventMode", 1) ;GUI事件响应模式
Opt("GUIEventOptions",1) ;修改特殊的 GUI 函数的返回值类型 1=立即通知
;Opt("WinTitleMatchMode",2);标题的任意子串皆可匹配
Opt("GUICloseOnESC",0);在按下 ESC 时不退出

$HwndC = WinGetHandle("Program Manager");桌面也是一个窗口,标题为Program Manager
$g_szVersion = "拾零装机工具箱"   ;不重复运行本程序
If WinExists($g_szVersion) Then ;检测是否有同一程序运行
        MsgBox(48, "提示 - 拾零装机工具箱", "温馨提示:[拾零装机工具箱]已在运行了,请勿重复运行! ",5,$HwndC)
        Exit ; 此脚本已经运行了
EndIf

$Gui_w = 360
$gui_h = 420
$hGUI = GUICreate("拾零装机工具箱", $Gui_w, $gui_h, @DesktopWidth - $Gui_w, Default, Default, Default)
$guiRect = _WinAPI_GetWindowRect($hGUI)
GUISetFont(9.7, 0, 0, "Tahoma") ;窗口默认字体

;--------------------工具栏------------
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", 2, 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)
  

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
;If $CmdLine[0] > 0 Then          ; 每个事件都需建这个东东
 ;       _TabButton2($CmdLine[1])  ; 关联第95行
;EndIf   


;------------标签设置--------------
$hTab = GUICtrlCreateTab(2, 80, 376, 400, BitOR($TCS_BOTTOM, $TCS_FIXEDWIDTH, $TCS_BUTTONS))
_GUICtrlTab_SetItemSize($hTab, 1, 1)
DirCreate (@ProgramFilesDir & "\Sealin")

Global $hTray = ControlGetHandle('[CLASS:Shell_TrayWnd]', '', 'TrayNotifyWnd1')
Global $trayRect = _WinAPI_GetWindowRect($hTray)


;GUICtrlCreatePic(@SystemDir & "\seafile\XLOGO.JPG", 0, 0, 380, 60)
$Label1 = GUICtrlCreateLabel(" Sealin Home ", 20, 404, 80, 30, 0)
GUICtrlSetTip($Label1, " 拾零技术 永不止步 ")
GUICtrlSetCursor($Label1, 0)

GuiCtrlCreatePic(@ProgramFilesDir &"\Sealin\XLOGO.JPG",10,10, 360,60)
GUICtrlCreateGroup ("", 10, 85, 340, 140)
GUICtrlCreateGroup ("", 10, 240, 340, 140)





;-----------------------------GUI菜单---------------------------------
$MuF1 = GUICtrlCreateMenu("控制面板(&C)")  ;--------控制面板-------


$MuF2 = GUICtrlCreateMenu("在线贴士(&R)")  ;-------在线小贴士---------



;=============================GUI界面-第一分页=============================

$Tab1 = GUICtrlCreateTabItem("系统工具")

$hGUI001 = GUICtrlCreateRadio("Word Wrong 修复", 40, 110, 130, 25, 0)


;------------------------第二分页-------------------------

$Tab2 = GUICtrlCreateTabItem("常用软件")

$Button21 = GUICtrlCreateRadio("电脑时间校准工具", 40, 110, 130, 25, 0)
GUICtrlSetTip(-1, " 请确保上网状态,再进行时间校准 ")
GUICtrlSetOnEvent(-1,"_Timecheck")
$Button22 = GUICtrlCreateRadio("软件快速卸载工具", 40, 145, 130, 25, 0)
GUICtrlSetOnEvent(-1,"_uninstall")


;为指定控件GUI的点击行为定义一个用户函数 
GUICtrlSetOnEvent($Label1, "Gui")

GUISetOnEvent($GUI_EVENT_CLOSE, "_Quit")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "TrayClick")
GUISetOnEvent($GUI_EVENT_RESTORE, "restore")
GUISetState()
WinMove("", "", @DesktopWidth / 2 - $Gui_w / 2, Default, Default, Default, 2)



GUICtrlSetOnEvent(-1, "_Quit") 
;_TrayIconSetState();显示托盘
$nTaskBarCreated = DllCall("user32.dll", "uint", "RegisterWindowMessageA", "str", "TaskbarCreated")
GUIRegisterMsg($nTaskBarCreated[0], "RecreateIcons")  ;防托盘图标被删


If $CmdLine[0] > 0 Then          ; 每个事件都需建这个东东
        _TabButton2($CmdLine[1])  ; 关联第95行
EndIf   




;;;;==========================上面是你弄的,先不动,等你明白了就行了。看=号中的
If $CmdLine[0] > 0 Then     ;;;;这里就是图标一的事件
        _newopen($CmdLine[1])
EndIf

If $CmdLine[0] > 0 Then     ;;;;这里就是图标二的事件
        _newopen2($CmdLine[1])
EndIf
;;;;这里也就是说如果我现在要弄图标二那我也要像图标二新建一个
;;;;;如果要弄很多事件的话,就按照上面跟着走
;;;;;;===================================================
While 1

        _GetMsgNotify()
        Sleep(100)
WEnd



Func _TabButton1() ;系统工具事件
        GUICtrlSetState($Tab1, $GUI_SHOW)
EndFunc

Func _TabButton2() ;常用软件事件
        GUICtrlSetState($Tab2, $GUI_SHOW)        
EndFunc


Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
        Local $tNMHDR, $hWndFrom, $iCode, $tNMTOOLBAR, $iItem
        
        $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
        $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
        
        $tNMTOOLBAR = DllStructCreate($tagNMTOOLBAR, $lParam)
        $iItem = DllStructGetData($tNMTOOLBAR ,"iItem")
        
        Switch $hWndFrom
                Case $hToolBar
                        Switch $iCode
                                Case $NM_LDOWN
                                        Switch $iItem
                                                Case $ToolBar_Open
                                                        $MSG_NOTIFY = "newOpen"
                                                Case $ToolBar_Close
                                                        $MSG_NOTIFY = "newOpen2"
                                                        
                                        EndSwitch
                        EndSwitch
        EndSwitch
        
        Return $GUI_RUNDEFMSG
EndFunc


;;;=======================这就是就事件 图标一的动作
Func _newopen()
GUICtrlCreateListView("图标1", 40, 180, 220, 120)
EndFunc

;;;=======================这就是就事件 图标二的动作
Func _newopen2()
;;;====这个里面我悲剧了,能执行事件1,却无法执行事件2的的GUI动作,能执行外部命令和MsgBox
;;;;=========就先不研究了,希望高手指教这里
GUICtrlCreateListView("图标2", 40, 180, 220, 120)
Run(@WindowsDir & "\notepad.exe")
EndFunc

;;;;;============================
Func _GetMsgNotify()
        Switch $MSG_NOTIFY
                Case "newOpen"
                        _newopen()
                                        Case "newOpen2"
                        _newopen2()
        EndSwitch
        $MSG_NOTIFY = ""
EndFunc

;;;;;;;;;====================================== 这个=号里是我新加的
 楼主| 发表于 2011-4-4 01:52:31 | 显示全部楼层
试试看,
jinefo 发表于 2011-4-3 16:51


谢谢楼上的朋友。我已经解决了。
 楼主| 发表于 2011-4-4 01:53:35 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-4-4 11:25:02 | 显示全部楼层
回复 13# lxsh010


    不知楼主弄的是否是
当鼠标点击系统工具就显示_tab1 第二个点击就显示_tab2
如果是,能给我份源码吗?练习下~~~ jinefo@qq.com
发表于 2011-4-4 18:20:25 | 显示全部楼层
写的不错也给我一个学习学习1043101064@qq,com
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-26 00:30 , Processed in 0.204680 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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