From 64da563916df983839504adb109006d4dd9d333d Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Thu, 2 Oct 2025 23:40:01 +0800 Subject: [PATCH] refactor: NotifyIcon balloon tip event handling. --- .../Controls/Other/NotifyIcon.cs | 21 ++++++++----------- .../Tools/Interop/InteropValues.cs | 2 ++ 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/Shared/HandyControl_Shared/Controls/Other/NotifyIcon.cs b/src/Shared/HandyControl_Shared/Controls/Other/NotifyIcon.cs index fbbfa8dd..6110cbc0 100644 --- a/src/Shared/HandyControl_Shared/Controls/Other/NotifyIcon.cs +++ b/src/Shared/HandyControl_Shared/Controls/Other/NotifyIcon.cs @@ -34,10 +34,6 @@ public class NotifyIcon : FrameworkElement, IDisposable private IconHandle _iconHandle; - private const int WmTrayMouseMessage = InteropValues.WM_USER + 1024; - - private const int NIN_BALLOONUSERCLICK = InteropValues.WM_USER + 1025; - private string _windowClassName; private int _wmTaskbarCreated; @@ -494,7 +490,7 @@ public class NotifyIcon : FrameworkElement, IDisposable _isTransparent = isTransparent; var data = new InteropValues.NOTIFYICONDATA { - uCallbackMessage = WmTrayMouseMessage, + uCallbackMessage = InteropValues.WM_TRAYMOUSEMESSAGE, uFlags = InteropValues.NIF_MESSAGE | InteropValues.NIF_ICON | InteropValues.NIF_TIP, hWnd = _messageWindowHandle, uID = _id, @@ -577,8 +573,8 @@ public class NotifyIcon : FrameworkElement, IDisposable _dispatcherTimerPos.Start(); } break; - case NIN_BALLOONUSERCLICK: - RaiseEvent(new RoutedEventArgs(BalloonTipClickedEvent)); + case InteropValues.NIN_BALLOONUSERCLICK: + RaiseEvent(new RoutedEventArgs(BalloonTipClickEvent)); break; } } @@ -676,13 +672,14 @@ public class NotifyIcon : FrameworkElement, IDisposable remove => RemoveHandler(MouseDoubleClickEvent, value); } - public static readonly RoutedEvent BalloonTipClickedEvent = - EventManager.RegisterRoutedEvent("BalloonTipClicked", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(NotifyIcon)); + public static readonly RoutedEvent BalloonTipClickEvent = + EventManager.RegisterRoutedEvent("BalloonTipClick", RoutingStrategy.Bubble, typeof(RoutedEventHandler), + typeof(NotifyIcon)); - public event RoutedEventHandler BalloonTipClicked + public event RoutedEventHandler BalloonTipClick { - add { AddHandler(BalloonTipClickedEvent, value); } - remove { RemoveHandler(BalloonTipClickedEvent, value); } + add => AddHandler(BalloonTipClickEvent, value); + remove => RemoveHandler(BalloonTipClickEvent, value); } private void UpdateDataContext(FrameworkElement target, object oldValue, object newValue) diff --git a/src/Shared/HandyControl_Shared/Tools/Interop/InteropValues.cs b/src/Shared/HandyControl_Shared/Tools/Interop/InteropValues.cs index e497e0c1..68f42f8f 100644 --- a/src/Shared/HandyControl_Shared/Tools/Interop/InteropValues.cs +++ b/src/Shared/HandyControl_Shared/Tools/Interop/InteropValues.cs @@ -83,9 +83,11 @@ internal class InteropValues MF_BYPOSITION = 0x400, MF_GRAYED = 0x00000001, MF_SEPARATOR = 0x800, + NIN_BALLOONUSERCLICK = WM_USER + 5, TB_GETBUTTON = WM_USER + 23, TB_BUTTONCOUNT = WM_USER + 24, TB_GETITEMRECT = WM_USER + 29, + WM_TRAYMOUSEMESSAGE = WM_USER + 1024, VERTRES = 10, DESKTOPVERTRES = 117, LOGPIXELSX = 88,