AU3之Toolbar

1、Toolbar的创建

1.1、create toolbar

1.2、add bitmap/imagelist/tooltip

1.3、Add button and string


2、Toolbar的消息响应(这里仅指ToolTip和$NM_LDOWN)

注册_WM_NOTIFY()处理$WM_NOTIFY消息:GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")

这里要注意结构体:

Global Const $tagNMHDR = "struct; hwnd hWndFrom;uint_ptr IDFrom;INT Code; endstruct"

hWndFromWindow handle to the control sending a message
IDFromIdentifier of the control sending a message
CodeNotification code

源码如下:

#include <GUIConstantsEx.au3>
#include <GuiToolbar.au3>
#include <WindowsConstants.au3>
#include <GuiToolTip.au3>


Global $hGUI, $hToolbar, $aStrings[5],$iItem
Global Enum  $idOpen=1000, $idSave,$idundo,$idredo


; Create GUI
$hGUI = GUICreate("Toolbar", 400, 300,-1,-1,$WS_OVERLAPPEDWINDOW)
$hToolbar = _GUICtrlToolbar_Create($hGUI)
$hToolTip = _GUIToolTip_Create($hToolbar)
_GUICtrlToolbar_SetToolTips($hToolbar, $hToolTip)
GUISetState(@SW_SHOW )


; Add standard system bitmaps
_GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR)


; Add strings
$aStrings0 = _GUICtrlToolbar_AddString($hToolbar, "&Open")
$aStrings1 = _GUICtrlToolbar_AddString($hToolbar, "&Save")
$aStrings2 = _GUICtrlToolbar_AddString($hToolbar, "&Undo")
$aStrings3 = _GUICtrlToolbar_AddString($hToolbar, "&Redo")


; Add buttons
_GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN, $aStrings0)
_GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE, $aStrings1)
_GUICtrlToolbar_AddButtonSep($hToolbar)
_GUICtrlToolbar_AddButton($hToolbar, $idundo, $STD_UNDO, $aStrings2)
_GUICtrlToolbar_AddButton($hToolbar, $idredo, $STD_REDOW, $aStrings3)


GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")


; Loop until the user exits.
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE


Func _WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam)
    #forceref $hWndGUI, $MsgID, $wParam
    Local $tNMHDR, $hwndFrom, $code, $i_idNew, $dwFlags, $i_idOld
    Local $tNMTBHOTITEM
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hwndFrom = DllStructGetData($tNMHDR, "hWndFrom")
    $code = DllStructGetData($tNMHDR, "Code")
    Switch $hwndFrom
Case $hToolbar
            Switch $code
Case $NM_LDOWN
Switch $iItem
Case 1000
MsgBox(262208, "", "Open Button")
Case 1001
MsgBox(262208, "", "Save Button")
Case 1002
MsgBox(262208, "", "Undo Button")
Case 1003
MsgBox(262208, "", "Redo Button")
EndSwitch
Case $TBN_HOTITEMCHANGE
$tNMTBHOTITEM = DllStructCreate($tagNMTBHOTITEM, $lParam)
$i_idOld = DllStructGetData($tNMTBHOTITEM, "idOld")
$i_idNew = DllStructGetData($tNMTBHOTITEM, "idNew")
$iItem = $i_idNew
EndSwitch
EndSwitch


Local $tInfo, $iID, $iCode
$tInfo = DllStructCreate($tagNMTTDISPINFO, $lParam)
$iCode = DllStructGetData($tInfo, "Code")
If $iCode = $TTN_GETDISPINFOW Then
$iID = DllStructGetData($tInfo, "IDFrom")
Switch $iID
Case 1000
DllStructSetData($tInfo, "aText", "Open")
Case 1001
DllStructSetData($tInfo, "aText", "Save")
Case 1002
DllStructSetData($tInfo, "aText", "Undo")
Case 1003
DllStructSetData($tInfo, "aText", "Redo")
EndSwitch
EndIf
    Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_NOTIFY


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值