リージョン破棄

SetWindowRgn()後の破棄とか

SetWindowRgn()後の破棄とか

  • タグ:
  • タグはありません
Public Sub DestroyHRgn(objForm As Form)

Dim lngRet As Long
Dim lngTmpRgn As Long

    'ダミーリージョン作成
    lngTmpRgn = CreateRectRgn(0&, 0&, 0&, 0&)
    If lngTmpRgn = 0& Then
        MsgBox "ダミーリージョンの作成に失敗しました" & vbCrLf & _
                GetErrorMsg(), vbCritical Or vbOKOnly
    Else
        '引数で指定されたウィンドウのリージョンを取得
        lngRet = GetWindowRgn(objForm.hWnd, lngTmpRgn)
        If lngRet <> ERROR Then
            'リージョン破棄
            lngRet = DeleteObject(lngTmpRgn)
            If lngRet = 0& Then
                MsgBox "リージョンの破棄に失敗しました" & vbCrLf & _
                        GetErrorMsg(), vbCritical Or vbOKOnly
            Else
                '正常終了
                Exit Sub
            End If
        Else
            MsgBox objForm.Name & "のリージョン取得に失敗しました" & vbCrLf & _
                    GetErrorMsg(), vbCritical Or vbOKOnly
        End If
        '正常に破棄できなかったので戻り値を見ずにダミーリージョンを破棄
        Call DeleteObject(lngTmpRgn)
    End If
    
End Sub