Exemple #1
0
        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);
        }