Merge pull request #3355 from sylveon/hand

Use system hand cursor
This commit is contained in:
Jaex 2018-04-29 18:30:50 +03:00 committed by GitHub
commit ad67b4837e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 0 deletions

View file

@ -1267,5 +1267,22 @@ public static string NumberToLetters(int num)
}
return result;
}
public static bool TryFixHandCursor()
{
try
{
// https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Cursors.cs,423
typeof(Cursors).GetField("hand", BindingFlags.NonPublic | BindingFlags.Static)
?.SetValue(null, new Cursor(NativeMethods.LoadCursor(IntPtr.Zero, NativeConstants.IDC_HAND)));
return true;
}
catch
{
// If it fails, we'll just have to live with the old hand.
return false;
}
}
}
}

View file

@ -82,6 +82,7 @@ public static class NativeConstants
public const uint ECM_FIRST = 0x1500;
public const uint EM_SETCUEBANNER = ECM_FIRST + 1;
public const int IDC_HAND = 32649;
public const uint MA_ACTIVATE = 1;
public const uint MA_ACTIVATEANDEAT = 2;
public const uint MA_NOACTIVATE = 3;

View file

@ -193,6 +193,9 @@ public static partial class NativeMethods
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsZoomed(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern IntPtr LoadCursor(IntPtr hInstance, int iconId);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool PrintWindow(IntPtr hwnd, IntPtr hDC, uint nFlags);

View file

@ -226,8 +226,10 @@ public static string ScreenshotsFolder
[STAThread]
private static void Main(string[] args)
{
#if !DEBUG // Allow Visual Studio to break on exceptions in Debug builds.
Application.ThreadException += Application_ThreadException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
#endif
StartTimer = Stopwatch.StartNew(); // For be able to show startup time
@ -288,6 +290,7 @@ private static void Run()
LanguageHelper.ChangeLanguage(Settings.Language);
Helpers.TryFixHandCursor();
DebugHelper.WriteLine("MainForm init started.");
MainForm = new MainForm();
DebugHelper.WriteLine("MainForm init finished.");
@ -500,6 +503,7 @@ private static bool CheckAdminTasks()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Helpers.TryFixHandCursor();
Application.Run(new DNSChangerForm());
return true;
}