imutraveler 发表于 2016-11-3 00:47:24

【已解决】普通按钮 如何做出Toolbar的 效果?

本帖最后由 imutraveler 于 2017-2-12 11:41 编辑

想要达到的效果如下:
1.按钮无边框,无突出
2.Toolbar中的_GUICtrlToolbar_AddButtonSep() 也就是分割线,普通按钮中怎么实现?

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiImageList.au3>
#include <GUIToolBar.au3>
#include <GuiButton.au3>

Global Enum $cmd01 = 1000, $cmd02, $cmd03, $cmd04

$Form1 = GUICreate("Example", 500, 280)

$hImage = _GUIImageList_Create(32, 32, 5, 3)
_GUIImageList_AddIcon($hImage, 'shell32.dll', 110, True)
_GUIImageList_AddIcon($hImage, 'shell32.dll', 137, True)
_GUIImageList_AddIcon($hImage, 'shell32.dll', 146, True)
_GUIImageList_AddIcon($hImage, 'shell32.dll', 128, True)

$hToolbar = _GUICtrlToolbar_Create($Form1, BitOR($TBSTYLE_FLAT, $TBSTYLE_LIST))
_GUICtrlToolbar_SetImageList($hToolbar, $hImage)
_GUICtrlToolbar_SetIndent($hToolbar, 8)

_GUICtrlToolbar_AddButton($hToolbar, $cmd01, 0, _GUICtrlToolbar_AddString($hToolbar, "工具栏按钮01"))
_GUICtrlToolbar_AddButtonSep($hToolbar)
_GUICtrlToolbar_AddButton($hToolbar, $cmd02, 1, _GUICtrlToolbar_AddString($hToolbar, "工具栏按钮02"))
_GUICtrlToolbar_AddButton($hToolbar, $cmd03, 2, _GUICtrlToolbar_AddString($hToolbar, "工具栏按钮03"))
_GUICtrlToolbar_AddButtonSep($hToolbar)
_GUICtrlToolbar_AddButton($hToolbar, $cmd04, 3, _GUICtrlToolbar_AddString($hToolbar, "工具栏按钮04"))

$BtnGroup = GUICtrlCreateGroup("", 3, 53, 494, 60)
$Btn01 = GUICtrlCreateButton("普通的按钮01", 7, 65, 119, 40)
GUICtrlSetFont(-1, 9, 400, 0, "Microsoft Yahei")
$Btn02 = GUICtrlCreateButton("普通的按钮02", 130, 65, 119, 40)
GUICtrlSetFont(-1, 9, 400, 0, "Microsoft Yahei")
$Btn03 = GUICtrlCreateButton("普通的按钮03", 247, 65, 119, 40)
GUICtrlSetFont(-1, 9, 400, 0, "Microsoft Yahei")
$Btn04 = GUICtrlCreateButton("普通的按钮04", 370, 65, 119, 40)
GUICtrlSetFont(-1, 9, 400, 0, "Microsoft Yahei")
_GUICtrlButton_SetImageList($Btn01, _GetImageListHandle("shell32.dll", 110, True), 0)
_GUICtrlButton_SetImageList($Btn02, _GetImageListHandle("shell32.dll", 137, True), 0)
_GUICtrlButton_SetImageList($Btn03, _GetImageListHandle("shell32.dll", 146, True), 0)
_GUICtrlButton_SetImageList($Btn04, _GetImageListHandle("shell32.dll", 128, True), 0)

GUISetState()

Func _GetImageListHandle($sFile, $nIconID = 0, $bLarge = False)
        Local $iSize = 16
        If $bLarge Then $iSize = 32

        Local $hImage = _GUIImageList_Create($iSize, $iSize, 5, 3)
        If StringUpper(StringMid($sFile, StringLen($sFile) - 2)) = "BMP" Then
                _GUIImageList_AddBitmap($hImage, $sFile)
        Else
                _GUIImageList_AddIcon($hImage, $sFile, $nIconID, $bLarge)
        EndIf
        Return $hImage
EndFunc   ;==>_GetImageListHandle

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                                        Exit
        EndSwitch
WEnd

chzj589 发表于 2016-11-3 09:52:27

想要达到的效果如下:
1.按钮无边框,无突出
2.Toolbar中的_GUICtrlToolbar_AddButtonSep() 也就是分割线 ...
imutraveler 发表于 2016-11-3 00:47 http://www.autoitx.com/images/common/back.gif
是这种效果?

heroxianf 发表于 2016-11-3 12:44:33

回复 2# chzj589


    界面你玩的很6啊。

cfanpc 发表于 2016-11-3 16:42:42

贴下源码分享下吧

imutraveler 发表于 2016-11-3 19:57:48

本帖最后由 imutraveler 于 2016-11-3 20:35 编辑

回复 2# chzj589


    恩呢,是的, 不知道分隔符是怎么实现的~~~

    包括GUI中其他位置想添加个 横向,竖向的 分隔符也不知道怎么实现。用label试过画一条灰色的线,感觉效果不好!不是透明的!

    还有就是按钮能不能 做成无边框, 无突出, 就和 toolbar类似的 效果呢?

chzj589 发表于 2016-11-3 20:46:33

回复chzj589


    恩呢,是的, 不知道分隔符是怎么实现的~~~

    包括GUI中其他位置想添加个 横 ...
imutraveler 发表于 2016-11-3 19:57 http://www.autoitx.com/images/common/back.gif
就是用Label画的,横竖都是。
按钮无边框也是用Label
背景颜色跟图面一样就行

imutraveler 发表于 2016-11-3 21:37:07

回复 6# chzj589


    那有没有 代码呢?就是按钮看起来和Toolbar按钮一样,普通按钮看着是和界面一个平面的,能不能做到呢?

chzj589 发表于 2016-11-4 08:54:14

回复chzj589


    那有没有 代码呢?就是按钮看起来和Toolbar按钮一样,普通按钮看着是和界面一个平 ...
imutraveler 发表于 2016-11-3 21:37 http://www.autoitx.com/images/common/back.gif
这样子?

图标不能用,要用位图

chzj589 发表于 2016-11-4 09:09:35

回复 8# chzj589



代码:

        $BtnGroup = GUICtrlCreateGroup("", 3, 53, 510, 60)
        $ad = @ScriptDir & "\w1.jpg"
        $pBG = GUICtrlCreatePic($ad, 7, 66, 121, 39)
        GUICtrlSetState(-1, $GUI_DISABLE)
        GUICtrlCreateGroup("", 7, 60, 121, 45)
        $Btn01a = GUICtrlCreateLabel("", 20, 77, 105, 30);普通的按钮01
        GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
        GUICtrlSetColor(-1, 0x0000FF)
        GUICtrlSetBkColor(-1, -2)
        GUICtrlSetCursor(-1, 0)
        GUICtrlCreateLabel("", 133, 65, 1, 40)       
        GUICtrlSetBkColor(-1, 0xC0C0A5)       


自己再研究研究吧

imutraveler 发表于 2016-11-5 00:52:17

回复 9# chzj589


    嗯,好的 ,,还有个问题,,toolbar只能从左上角 开始么??

    1. 我试过用_GUICtrlToolbar_SetIndent() 做 缩进,,,从GUI中间开始创建第一个按钮,但是在左侧缩进的位置,创建 文本框和按钮 做 搜索功能,,这两个控件被toolbar窗口覆盖了!
    2. 试过用子窗口内嵌,然后在子窗口中创建toolbar, 可是有个新问题就是,点击toolbar按钮,父窗口会失去焦点!!#Region ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
#AccAu3Wrapper_OutFile=按钮和工具栏.exe
#AccAu3Wrapper_UseX64=n
#AccAu3Wrapper_Res_Language=2052
#AccAu3Wrapper_Res_requestedExecutionLevel=None
#EndRegion ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiImageList.au3>
#include <GUIToolBar.au3>
#include <GuiButton.au3>

Global Enum $cmd01 = 1000, $cmd02, $cmd03, $cmd04

$Form1 = GUICreate("Example", 500, 280, -1, -1, $WS_EX_LAYERED)

$hImage = _GUIImageList_Create(32, 32, 5, 3)
_GUIImageList_AddIcon($hImage, 'shell32.dll', 110, True)
_GUIImageList_AddIcon($hImage, 'shell32.dll', 137, True)
_GUIImageList_AddIcon($hImage, 'shell32.dll', 146, True)
_GUIImageList_AddIcon($hImage, 'shell32.dll', 128, True)

$hToolbar = _GUICtrlToolbar_Create($Form1, BitOR($TBSTYLE_FLAT, $TBSTYLE_LIST))
_GUICtrlToolbar_SetImageList($hToolbar, $hImage)
_GUICtrlToolbar_SetIndent($hToolbar, 155)

_GUICtrlToolbar_AddButton($hToolbar, $cmd01, 0, _GUICtrlToolbar_AddString($hToolbar, "按钮01"))
_GUICtrlToolbar_AddButtonSep($hToolbar)
_GUICtrlToolbar_AddButton($hToolbar, $cmd02, 1, _GUICtrlToolbar_AddString($hToolbar, "按钮02"))
_GUICtrlToolbar_AddButton($hToolbar, $cmd03, 2, _GUICtrlToolbar_AddString($hToolbar, "按钮03"))
_GUICtrlToolbar_AddButtonSep($hToolbar)
_GUICtrlToolbar_AddButton($hToolbar, 0, 3, _GUICtrlToolbar_AddString($hToolbar, "按钮04"))

GUICtrlCreateGroup("", 5, -2, 145, 40)
$SearchText = GUICtrlCreateInput("", 11, 9, 80, 23)
$SearchBtn = GUICtrlCreateButton("查找", 95, 8, 50, 25)

GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                                        Exit
        EndSwitch
WEnd

zxhou1 发表于 2016-11-6 11:41:31

{:face (382):}

baoxingchun 发表于 2016-11-7 14:43:02

感谢高手分享
页: [1]
查看完整版本: 【已解决】普通按钮 如何做出Toolbar的 效果?