kk_lee69 发表于 2016-9-5 02:15:42

在不使用OnEvent事件函数通知的情况下如何让工具栏按钮有作用??

程序代码 如下:

请问 如何在不使用OnEvent事件函数通知的情况下如何让工具栏按钮有作用??

求高手帮忙改一下谢谢!!

#include <GuiToolbar.au3>
#include <GuiMenu.au3>
#include <GuiToolTip.au3>

#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>

#include <GUIComboBox.au3>

#include <Constants.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <FontConstants.au3>

Opt("GUIOnEventMode", 0)
       
$WinSub = GUICreate(" 基本数据设定" , 800,600, -1, -1, BitOR($WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_SYSMENU, $WS_GROUP, $WS_TABSTOP), -1 );BitOR($WS_CHILD, $WS_MINIMIZEBOX, $WS_CAPTION, $WS_SYSMENU)
       
$hToolbarSub=_GUICtrlToolbar_Create($WinSub);工具条
_GUICtrlToolbar_SetStyleCustomErase($hToolbarSub, True)
_GUICtrlToolbar_SetExtendedStyle($hToolbarSub, $TBSTYLE_EX_DRAWDDARROWS)
       
       
$hImage = _GUIImageList_Create(16, 16, 5, 3, 4)
       
_GUIImageList_AddIcon($hImage, "shell32.dll", 15, True)
_GUIImageList_AddIcon($hImage, "shell32.dll", 16, True)
_GUICtrlToolbar_SetImageList($hToolbarSub, $hImage)
; 添加按钮
_GUICtrlToolbar_AddButton($hToolbarSub, 901, 0, _GUICtrlToolbar_AddString($hToolbarSub, "新增"))
_GUICtrlToolbar_AddButton($hToolbarSub, 902, 1, _GUICtrlToolbar_AddString($hToolbarSub, "存档"))

       
$aSize = _GUICtrlToolbar_GetButtonSize($hToolbarSub)
_GUICtrlToolbar_SetButtonSize($hToolbarSub, $aSize, 50)
       
$Label1 = GUICtrlCreateLabel("_", 0, 43, @DesktopWidth, 1, 0x1000);线条的部份
GUICtrlSetResizing(-1,802)


GUISetState()
        While 1
                Switch guigetmsg()
                        Case $GUI_EVENT_CLOSE
                                EXIT

                        Case 901
                                GuiSetState(@SW_DISABLE,$WinSub) ; 禁用窗口,以防用户作出其他更改
                               
                                MsgBox(0,"","新增按钮")
                               
                                WinActivate($WinSUB,"")
                                GuiSetState(@SW_ENABLE,$WinSub) ; 使窗口重新可用

                EndSwitch
        Sleep(10)
        WEnd

chzj589 发表于 2016-9-5 07:03:53

回复 1# kk_lee69

好象要加上:GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")

heroxianf 发表于 2016-9-5 09:37:44

一直对循环模式的事件不晓得怎么弄,留名学习。

kk_lee69 发表于 2016-9-5 10:29:23

回复 2# chzj589

就是要找不使用GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY") 的方法

kk_lee69 发表于 2016-9-5 15:18:02

回复 2# chzj589

有沒有辦法用 BUTTON 模仿出工具列的感覺

heroxianf 发表于 2016-9-5 15:19:16

回复 5# kk_lee69

K大你在研究啥呢,没太明白。

kk_lee69 发表于 2016-9-5 15:25:41

回复 6# heroxianf

上面的 範例請讓我的工作列按鈕 可以作用即可

不可以使用
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

這兩個 要讓 按鈕 按下去 有作用

或者可以直接利用BUTTON 模仿出 這個效果 也可以解決我的問題

chzj589 发表于 2016-9-5 15:38:16

本帖最后由 chzj589 于 2016-9-5 16:03 编辑

回复 5# kk_lee69

用 BUTTON 模仿出工具栏

heroxianf 发表于 2016-9-5 15:54:48

回复 8# chzj589

工具列是个什么东东?

kk_lee69 发表于 2016-9-5 16:01:29

回复 9# heroxianf

工具栏TOOLBAR

chzj589 发表于 2016-9-5 16:02:11

回复 7# kk_lee69

用 BUTTON 模仿出工具栏
#include <GuiToolbar.au3>
#include <GuiMenu.au3>
#include <GuiToolTip.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GUIComboBox.au3>
#include <Constants.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <FontConstants.au3>
#include <GuiButton.au3>

;Opt("GUIOnEventMode", 0)
Global $iCmdID, $hWndGUI, $MsgID, $wParam, $lParam, $e_idSave, $aStrings

$WinSub = GUICreate(" 基本数据设定", 800, 600, -1, -1, BitOR($WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_SYSMENU, $WS_GROUP, $WS_TABSTOP), -1);BitOR($WS_CHILD, $WS_MINIMIZEBOX, $WS_CAPTION, $WS_SYSMENU)
$Button1 = GUICtrlCreateLabel("新增按钮", 10, 60, 60, 30)
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetBkColor(-1, -2)
GUICtrlSetCursor(-1, 0)
$MenButton1 = GUICtrlCreateButton("", 10, 5, 48, 48, $WS_EX_WINDOWEDGE)
$hImage = _GUIImageList_Create(40, 40, 5, 1, 0)
_GUICtrlButton_SetImageList($MenButton1, _set_button_image_maxx(39), 5)
$Button2 = GUICtrlCreateLabel("存档按钮", 80, 60, 60, 30)
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetBkColor(-1, -2)
GUICtrlSetCursor(-1, 0)
$MenButton2 = GUICtrlCreateButton("", 80, 5, 48, 48, $WS_EX_WINDOWEDGE)
$hImage = _GUIImageList_Create(40, 40, 5, 1, 0)
_GUICtrlButton_SetImageList($MenButton2, _set_button_image_maxx(20), 5)
$Label1 = GUICtrlCreateLabel("_", 0, 76, @DesktopWidth, 1, 0x1000);线条的部份

GUICtrlSetResizing(-1,802)

GUISetState()

While 1
        Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1, $MenButton1
                        ;MsgBox(0, "信息", "按钮选择状态: " & _GUICtrlToolbar_IsButtonChecked($hToolbarSub, $e_idSave))
                        ;GUISetState(@SW_DISABLE, $WinSub) ; 禁用窗口,以防用户作出其他更改
                        MsgBox(0, "", "新增按钮")
                        ;WinActivate($WinSub, "")
                        ;GUISetState(@SW_ENABLE, $WinSub) ; 使窗口重新可用
                Case $Button2, $MenButton2
                        MsgBox(0, "", "存档按钮")
        EndSwitch

WEnd
Func _set_button_image_maxx($icon_index)
        Local $hImage_Temp = _GUIImageList_Create(40, 40, 5, 3, 6)
        _GUIImageList_AddIcon($hImage_Temp, "Shell32.dll", $icon_index, True)
        Return $hImage_Temp
EndFunc   ;==>_set_button_image_maxx

kk_lee69 发表于 2016-9-5 16:04:30

回复 8# chzj589

這個 可以 可是 你應該是 按鈕歸按鈕字是用Label 標籤處理的嗎???

方便 給我看看 上面那段 工具列的源碼嗎??

heroxianf 发表于 2016-9-5 16:07:26

回复 10# kk_lee69

哦,我之前用的是按钮用图片填充,取消文字,采用鼠标在上面文字提示。

chzj589 发表于 2016-9-5 16:09:24

回复 12# kk_lee69
兄弟,能行不?

chamlien 发表于 2016-9-5 16:13:24

回复 12# kk_lee69


    楼上的源码放出了,字确实是Label标签处理的
页: [1] 2
查看完整版本: 在不使用OnEvent事件函数通知的情况下如何让工具栏按钮有作用??