beve
Осваивающий
- Сообщения
- 104
- Репутация
- 31
У меня не получается, чтобы при наведени на значок программы в трее окно стало видимым, а когда убрать указатель мышки из этого значка - окно исчезло...
Вернее получилось, но не тем способом, которым ожидал и не до конца так, как хотел. Вот мой пример:
Мне важно чтобы работало именно в таком формате, когда значок и меню в трее создается с помощью ModernMenuRaw.au3. В данном случае функция GUICtrlSetOnHover() не работает корректно, потому что $nTrayIcon= 1 и в результате не то. Но, как бы найти правильное решение, чтобы окно пропадало, если убирать указатель мышки с одного этого значка программы?
Вернее получилось, но не тем способом, которым ожидал и не до конца так, как хотел. Вот мой пример:
Код:
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <GUICtrlSetOnHover_UDF.au3>
#include <ModernMenuRaw.au3>
Opt("GUIOnEventMode",1)
Global $bi=0
#REGION ~GUI
Global $hGUI = GUICreate("TestGui", 300, 100,-1,-1,-1,0x00000080)
GUISetOnEvent($GUI_EVENT_CLOSE, "MenuEvents")
#EndRegion ### END GUI section ###
;----------------------------------------------------------------------------------
#Region ~Tray
Global $nTrayIcon
$nTrayIcon=_TrayIconCreate("TrayIcon", "","", "TrayCallBack")
_TrayIconSetClick(-1, 16)
GUICtrlSetOnHover($nTrayIcon, "Hover_Func_ForTrayIcon", "Leave_Hover_Func_ForTrayIcon")
_TrayCreateContextMenu()
; пункт о программе
Global $TrayAbout = _TrayCreateItem("О программе")
GUICtrlSetOnEvent(-1, "MenuEvents")
_TrayItemSetIcon(-1, "shell32.dll", -24)
;разделитель
_TrayCreateItem("")
_TrayItemSetIcon(-1, "")
;пункт выход
Global $TrayExit = _TrayCreateItem("Выход")
GUICtrlSetOnEvent(-1, "MenuEvents")
_TrayItemSetIcon(-1, "shell32.dll", -28)
;-----------------------------------------------------------------------------------
#EndRegion ~Tray
_TrayIconSetState($nTrayIcon, @SW_SHOW) ; Show the tray icon
While 1
Sleep(100)
WEnd
#region ~Functions
Func Hover_Func_ForTrayIcon($CtrlID)
GUISetState(@SW_HIDE, $hGUI)
;GUISetState(@SW_SHOW, $hGUI)
EndFunc
Func Leave_Hover_Func_ForTrayIcon($CtrlID)
;GUISetState(@SW_HIDE, $hGUI)
EndFunc
;выход и программы
Func CLOSEClicked()
if @GUI_WINHANDLE = $hGui or @GUI_CTRLID = $TrayExit then
_TrayIconDelete($nTrayIcon)
Exit
endif
EndFunc
;
Func MenuEvents()
Local $Msg = @GUI_CtrlID
Switch $Msg
Case $GUI_EVENT_CLOSE, $TrayExit
CLOSEClicked()
;
Case $TrayAbout
MsgBox(64,"About","",-1,$hGUI)
EndSwitch
EndFunc
;
Func TrayCallBack($nID, $nMsg)
Switch $nID
Case $nTrayIcon
GUISetState(@SW_SHOW, $hGui)
EndSwitch
EndFunc
#Endregion ~Functions
Мне важно чтобы работало именно в таком формате, когда значок и меню в трее создается с помощью ModernMenuRaw.au3. В данном случае функция GUICtrlSetOnHover() не работает корректно, потому что $nTrayIcon= 1 и в результате не то. Но, как бы найти правильное решение, чтобы окно пропадало, если убирать указатель мышки с одного этого значка программы?