protected override bool ReleaseHandle() { // Win32Apiの実行処理 // Win32ApiのWindou共通の呼び出し機能を用いて、アイコンの破棄処理を呼び出す Win32ApiResult Function() { bool win32Result = NativeMethods.DestroyIcon(handle); int win32ErrorCode = Marshal.GetLastWin32Error(); return(new Win32ApiResult(win32Result, win32ErrorCode)); } // 実行 string dllName = "user32.dll"; string methodName = nameof(NativeMethods.DestroyIcon); Win32ApiResult result = Win32ApiCommon.Run(Function, dllName, methodName); // 正常終了したかチェック if (!result.Result && result.ErrorCode != (int)ErrorCode.NO_ERROR) { // 解放が失敗した場合、False を返す return(false); } // 解放が成功した場合、True を返す return(true); }
protected override bool ReleaseHandle() { // グラフィックオブジェクトが設定されている場合、その解放処理をを行う GraphicsObject?.ReleaseHdc(handle); // Win32Apiの実行処理 // Win32ApiのWindou共通の呼び出し機能を用いて、デバイスコンテキスト(DC)の破棄処理を呼び出す Win32ApiResult Function() { bool win32Result = NativeMethods.DeleteDC(handle); return(new Win32ApiResult(win32Result)); } // 実行 string dllName = "gdi32.dll"; string methodName = nameof(NativeMethods.DeleteDC); Win32ApiResult result = Win32ApiCommon.Run(Function, dllName, methodName); // 正常終了したかチェック if (!result.Result) { // 解放が失敗した場合、False を返す return(false); } // 解放が成功した場合、True を返す return(true); }