ahmeddzcom Posted May 19, 2016 Posted May 19, 2016 (edited) Hello i Find Minimize to tray here : But if add Button not work. expandcollapse popup#include <Constants.au3> #include <GUIConstants.au3> #include <WinAPI.au3> Opt('GUIOnEventMode', 1) Opt('TrayOnEventMode', 1) Global Const $IDANI_OPEN = 1 Global Const $IDANI_CAPTION = 3 Global $hGUI = GUICreate('Test', 300, 200) Global $fMinimized = False Global $hTray = ControlGetHandle('[CLASS:Shell_TrayWnd]', '', 'TrayNotifyWnd1') $Button1 = GUICtrlCreateButton("Ok", 100, 100, 40, 30, $BS_ICON) TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE, '_Restore') TraySetClick(16) GUISetOnEvent($GUI_EVENT_CLOSE, '_Minimize') GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $Button1 MsgBox(0,"","Ok") EndSwitch WEnd Func _Minimize() Local $tRcFrom , $tRcTo If Not $fMinimized Then $tRcFrom = _WinAPI_GetWindowRect($hGUI) $tRcTo = _WinAPI_GetWindowRect($hTray) _WinAPI_DrawAnimatedRects($hGUI, $IDANI_CAPTION, DllStructGetPtr($tRcFrom), DllStructGetPtr($tRcTo)) GUISetState(@SW_HIDE) $fMinimized = True EndIf EndFunc Func _Restore() If $fMinimized Then $tRcFrom = _WinAPI_GetWindowRect($hTray) $tRcTo = _WinAPI_GetWindowRect($hGUI) _WinAPI_DrawAnimatedRects($hGUI, $IDANI_CAPTION, DllStructGetPtr($tRcFrom), DllStructGetPtr($tRcTo)) GUISetState(@SW_SHOW) $fMinimized = False EndIf EndFunc Func _WinAPI_DrawAnimatedRects($hWnd, $iAnim, $pRectFrom, $pRectTo) Local $aResult $aResult = DllCall('user32.dll', 'int', 'DrawAnimatedRects', 'hwnd', $hWnd, 'int', $iAnim, 'ptr', $pRectFrom, 'ptr', $pRectTo) If @error Then Return SetError(1, 0, 0) Return $aResult[0] EndFunc Edited May 20, 2016 by ahmeddzcom
AutoBert Posted May 19, 2016 Posted May 19, 2016 When using GUIOnEventMode GuiGetMsg not working, read in helpfile => GUI Reference => GUI Concepts to understand this. And give your thread a title which belongs to the issue. ahmeddzcom 1
Moderators Melba23 Posted June 2, 2016 Moderators Posted June 2, 2016 ahmeddzcom, You were given the solution above. You have set the script to run using OnEvent mode - doing so prevents GUIGetMsg from working and so to capture the button event you will need to use GUICtrlSetOnEvent to assign a function to it. I suggest reading the <GUIReference - GUI Concepts> section of the Help file to understand the difference between OnEvent & MessageLoop modes.. M23 ahmeddzcom 1 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now