|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.ComponentModel;
using System.Drawing;
using System.Runtime.InteropServices;
namespace System.Windows.Forms.Primitives.Tests.Interop.Mocks;
public class MockCursor : IDisposable
{
private HCURSOR _handle;
private readonly bool _ownHandle = true;
private readonly PCWSTR _resourceId;
internal MockCursor(PCWSTR nResourceId)
{
// We don't delete stock cursors.
_ownHandle = false;
_resourceId = nResourceId;
_handle = PInvoke.LoadCursor(HINSTANCE.Null, nResourceId);
if (_handle.IsNull)
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
}
public void Dispose()
{
if (!_handle.IsNull && _ownHandle)
{
PInvoke.DestroyCursor(_handle);
_handle = HCURSOR.Null;
}
}
internal HCURSOR Handle => _handle.IsNull ? throw new ObjectDisposedException(nameof(MockCursor)) : _handle;
public Size Size => SystemInformation.CursorSize;
}
|