Ticket #2494: _GUICtrlToolbar_SetHotItem.au3

File _GUICtrlToolbar_SetHotItem.au3, 3.7 KB (added by mlipok, on Oct 5, 2013 at 9:11:28 PM)

_GUICtrlToolbar_SetHotItem.au3

Line 
1#include <GuiToolbar.au3>
2#include <GUIConstantsEx.au3>
3#include <WindowsConstants.au3>
4
5Global $hToolbar, $iMemo
6Global $iItem ; Command identifier of the button associated with the notification.
7Global Enum $id_New = 1000, $id_Open, $id_Save, $id_Help
8
9Example()
10
11Func Example()
12 Local $hGUI, $aSize
13
14 ; Create GUI
15 $hGUI = GUICreate("Toolbar", 600, 400)
16 $hToolbar = _GUICtrlToolbar_Create($hGUI)
17 $aSize = _GUICtrlToolbar_GetMaxSize($hToolbar)
18
19 $iMemo = GUICtrlCreateEdit("", 2, $aSize[1] + 20, 596, 396 - ($aSize[1] + 20), $WS_VSCROLL)
20 GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
21 GUISetState()
22 GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")
23
24 ; Add standard system bitmaps
25 _GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR)
26
27 ; Add buttons
28 _GUICtrlToolbar_AddButton($hToolbar, $id_New, $STD_FILENEW)
29 _GUICtrlToolbar_AddButton($hToolbar, $id_Open, $STD_FILEOPEN)
30 _GUICtrlToolbar_AddButton($hToolbar, $id_Save, $STD_FILESAVE)
31 _GUICtrlToolbar_AddButtonSep($hToolbar)
32 _GUICtrlToolbar_AddButton($hToolbar, $id_Help, $STD_HELP)
33
34 ; Sets the hot item
35 _GUICtrlToolbar_SetHotItem($hToolbar, 2)
36
37 ; Loop until user exits
38 Do
39 Until GUIGetMsg() = $GUI_EVENT_CLOSE
40EndFunc ;==>Example
41
42; Write message to memo
43Func MemoWrite($sMessage = "")
44 GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
45EndFunc ;==>MemoWrite
46
47; WM_NOTIFY event handler
48Func _WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam)
49 #forceref $hWndGUI, $MsgID, $wParam
50 Local $tNMHDR, $hwndFrom, $code, $i_idNew, $dwFlags, $i_idOld
51 Local $tNMTBHOTITEM
52 $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
53 $hwndFrom = DllStructGetData($tNMHDR, "hWndFrom")
54 $code = DllStructGetData($tNMHDR, "Code")
55 Switch $hwndFrom
56 Case $hToolbar
57 Switch $code
58 Case $NM_LDOWN
59 ;----------------------------------------------------------------------------------------------
60 MemoWrite("$NM_LDOWN: Clicked Item: " & $iItem & " at index: " & _GUICtrlToolbar_CommandToIndex($hToolbar, $iItem))
61 ;----------------------------------------------------------------------------------------------
62 Case $TBN_HOTITEMCHANGE
63 $tNMTBHOTITEM = DllStructCreate($tagNMTBHOTITEM, $lParam)
64 $i_idOld = DllStructGetData($tNMTBHOTITEM, "idOld")
65 $i_idNew = DllStructGetData($tNMTBHOTITEM, "idNew")
66 $iItem = $i_idNew
67 $dwFlags = DllStructGetData($tNMTBHOTITEM, "dwFlags")
68 If BitAND($dwFlags, $HICF_LEAVING) = $HICF_LEAVING Then
69 MemoWrite("$HICF_LEAVING: " & $i_idOld)
70 Else
71 Switch $i_idNew
72 Case $id_New
73 ;----------------------------------------------------------------------------------------------
74 MemoWrite("$TBN_HOTITEMCHANGE: $idNew")
75 ;----------------------------------------------------------------------------------------------
76 Case $id_Open
77 ;----------------------------------------------------------------------------------------------
78 MemoWrite("$TBN_HOTITEMCHANGE: $idOpen")
79 ;----------------------------------------------------------------------------------------------
80 Case $id_Save
81 ;----------------------------------------------------------------------------------------------
82 MemoWrite("$TBN_HOTITEMCHANGE: $idSave")
83 ;----------------------------------------------------------------------------------------------
84 Case $id_Help
85 ;----------------------------------------------------------------------------------------------
86 MemoWrite("$TBN_HOTITEMCHANGE: $idHelp")
87 ;----------------------------------------------------------------------------------------------
88 EndSwitch
89 EndIf
90 EndSwitch
91 EndSwitch
92 Return $GUI_RUNDEFMSG
93EndFunc ;==>_WM_NOTIFY