常に手前に表示を設定/解除する

VisualBasic6用
常に手前に表示を設定/解除する

Private Type RECT
        left As Long    'WindowのX座標
        top As Long     'WindowのY座標
        right As Long   'Windowの右端の座標
        bottom As Long  'Windowの底にあたる部分の座標
End Type
Const HWND_TOP = 0           '手前にセット
Const HWND_BOTTOM = 1        '後ろにセット
Const HWND_TOPMOST = -1      '常に手前にセット
Const HWND_NOTOPMOST = -2    '常に手前、解除
Const SWP_SHOWWINDOW = &H40  '表示する
'
' 常に手前に表示を設定/解除する
'   lngHWnd  : 対象のウィンドウハンドル
'   bolIsTop : True - 設定 / False - 解除
'
Sub SetFormTop(lngHWnd As Long, bolIsTop As Boolean)
    Dim mLeft
    Dim mTop
    Dim mWidth
    Dim mHeight
    Dim lpRect As RECT

    SetFormTop = GetWindowRect(lngHWnd, lpRect)

    mLeft = lpRect.left
    mTop = lpRect.top
    mWidth = lpRect.right - lpRect.left
    mHeight = lpRect.bottom - lpRect.top
    
    If bolIsTop Then
        SetFormTop = SetWindowPos(lngHWnd, HWND_TOPMOST, mLeft, mTop, mWidth, mHeight, SWP_SHOWWINDOW)
    Else
        SetFormTop = SetWindowPos(lngHWnd, HWND_NOTOPMOST, mLeft, mTop, mWidth, mHeight, SWP_SHOWWINDOW)
    End If
End Sub