AutoIt上路02-添加菜单栏:http://www.gaohaiyan.com/910.html
书接上文,按照设计需求,继续我们的开发。
在一个软件中,菜单栏必不可少,工具栏同样非常重要,它可以提供快捷操作,免去打开菜单栏操作的麻烦。
AutoIt没有提供内置的工具栏函数,但在用户自定义函数中有 GuiToolbar.au3 可以使用。
因此,第1步,#include <GuiToolbar.au3>
第2步,创建:_GUICtrlToolbar_Create ( $hWnd, $iStyle = 0x00000800, $iExStyle = 0x00000000 )
参数1:父窗口或所有者窗口的句柄
参数2:可选的控件样式,用于初始化工具条的样式、可控性等
参数3:可选的控件扩展样式,用于初始化工具条的样式等
第3步,在工具栏中添加按钮
首先,为工具栏添加需要的图片集
然后,逐个添加按钮并制定图片
第4步,注册窗体消息监听,处理工具栏按钮的点击
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
#include <GUIConstantsEx.au3> #include <GuiToolbar.au3> #include <WindowsConstants.au3> Opt("GUIOnEventMode", 1) ; 使用关键字 Global 声明一个全局的变量,动态存储工具栏的单个按钮 Global $itemInToolbar $guiWelcome = GUICreate("威格灵", 400, 200) GUISetOnEvent($GUI_EVENT_CLOSE, "Func_GUI_EVENT_CLOSE") $menuFile = GUICtrlCreateMenu ( "文件 &F") $itemOpenInMenuFile = GUICtrlCreateMenuItem("打开", $menuFile) GUICtrlCreateMenuItem("", $menuFile) $itemExitInMenuFile = GUICtrlCreateMenuItem("退出", $menuFile) GUICtrlSetOnEvent($itemExitInMenuFile, "Func_GUI_EVENT_CLOSE") ; 1.添加工具栏(父窗体) $toolbar = _GUICtrlToolbar_Create($guiWelcome) ; 添加系统标准位图(工具栏,图像的位图数-不明白,-1表示系统定义按钮位图到图像列表,) _GUICtrlToolbar_AddBitmap($toolbar, 1, -1, $IDB_STD_SMALL_COLOR) ; 既定的工具栏按钮句柄,$id_New的初始值尽量大,防止控件太多而冲突;后面的累加 Local Enum $id_New = 1000, $id_Open, $id_Save, $id_Find, $id_Help ; 添加按钮(工具条,句柄,GuiToolbar.au3中定义的图片标识) _GUICtrlToolbar_AddButton($toolbar, $id_New, $STD_FILENEW) _GUICtrlToolbar_AddButton($toolbar, $id_Open, $STD_FILEOPEN) _GUICtrlToolbar_AddButton($toolbar, $id_Save, $STD_FILESAVE) _GUICtrlToolbar_AddButtonSep($toolbar) ; 分割线 _GUICtrlToolbar_AddButton($toolbar, $id_Find, $STD_FIND) _GUICtrlToolbar_AddButtonSep($toolbar) _GUICtrlToolbar_AddButton($toolbar, $id_Help, $STD_HELP) GUISetState(@SW_SHOW, $guiWelcome) ; 2.注册消息监听(Windows系统消息,自定义的处理函数) GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY") ;-------------------------------- 分割线 ----------------------------- While 1 Sleep(200) WEnd Func Func_GUI_EVENT_CLOSE () Exit EndFunc ; WM_NOTIFY 通知事件处理程序,4个固定参数。第4个参数保存了消息的全部内容 ; 此处为Windows编程内容,具体可网络搜索关键字WM_NOTIFY Func _WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam) Local $tNMHDR, $hwndFrom, $code, $i_idOld, $i_idNew Local $tNMTBHOTITEM ; 1)获得消息体(返回的数据结构体{HWND hwndFrom; UINT idFrom; UINT code;}, 消息数据源) $tNMHDR = DllStructCreate($tagNMHDR, $lParam) ; 2)发送消息的控制ID(消息体,"要获取的信息名-hWndForm代表控件集") $hwndFrom = DllStructGetData($tNMHDR, "hWndFrom") ; 3)事件类型码(信息体,"要获取的信息名-Code代表事件集") $code = DllStructGetData($tNMHDR, "Code") Switch $hwndFrom ; 1》匹配控件 Case $toolbar Switch $code ; 2》匹配事件 ; http://technet.microsoft.com/zh-cn/subscriptions/15xs07d5.aspx Case $TBN_HOTITEMCHANGE ; 指示热 (突出显示的) 项更改 $tNMTBHOTITEM = DllStructCreate($tagNMTBHOTITEM, $lParam) $i_idOld = DllStructGetData($tNMTBHOTITEM, "idOld") $i_idNew = DllStructGetData($tNMTBHOTITEM, "idNew") $itemInToolbar = $i_idNew Case $NM_LDOWN ; 左键点下事件 Switch $itemInToolbar ; 3》匹配既定的工具条按钮句柄 Case 1000 MsgBox(262208, "点击的工具条按钮:", "新建") $itemInToolbar = -1 ; 重置 Case $id_Open MsgBox(262208, "点击的工具条按钮:", "打开") $itemInToolbar = -1 Case $id_Save MsgBox(262208, "点击的工具条按钮:", "保存") $itemInToolbar = -1 Case 1003 MsgBox(262208, "点击的工具条按钮:", "查找") $itemInToolbar = -1 Case 1004 MsgBox(262208, "点击的工具条按钮:", "帮助") $itemInToolbar = -1 EndSwitch EndSwitch ;Case $ListView ; 其它控件 EndSwitch Return $GUI_RUNDEFMSG ; 返回此值表示循环获取消息 EndFunc |
声明
本文由崔维友 威格灵 cuiweiyou vigiles cuiweiyou 原创,转载请注明出处:http://www.gaohaiyan.com/918.html
承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设