常に手前に表示!!



'===========================================================================
'    ファイル名    : frmFormTopMost.bas
'    ファイル説明  : 常に手前に表示を設定・解除する
'    作成者        : Uz
'                    E-Mail   : uz@violet.plala.or.jp
'                    HomePage : http://www1.plala.or.jp/uz/
'    作成日        : 1998/08/30 (Sun)
'    修正日        : 1998/08/30 (Sun)
'    備考          : なし
'===========================================================================
Option Explicit

' -- API 関数宣言
Private Declare Function SetWindowPos Lib "user32" ( _
    ByVal hwnd As Long, _
    ByVal hWndInsertAfter As Long, _
    ByVal X As Long, _
    ByVal Y As Long, _
    ByVal cx As Long, _
    ByVal cy As Long, _
    ByVal wFlags As Long _
) As Long

' -- API 定数宣言
Private Const HWND_TOPMOST = -1      '常に手前にセット
Private Const HWND_NOTOPMOST = -2    '常に手前、解除

Private Const SWP_SHOWWINDOW = &H40  '表示する

Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2

'///////////////////////////////////////////////////////////////////////////
'      関数名    : SetFormTop
'      目的説明  :
'      前提条件  : なし
'      結果      : なし
'      引数      : frmObject    Form    : 設定するフォーム
'                  Palam        Integer : 1:常に手前に表示設定
'                                         0:解除
'      戻り値    : Long     :正常に実行された場合は0以外の値、エラーが発生した場合は0。GetLastErrorが設定される。
'      備考      ; なし
'///////////////////////////////////////////////////////////////////////////
Public Function SetFormTop(frmObject As Form, Palam As Integer) As Long
    Dim mHwnd As Long
    
    mHwnd = frmObject.hwnd
    If Palam = 0 Then
        SetFormTop = SetWindowPos(mHwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE)
    Else
        SetFormTop = SetWindowPos(mHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE)
    End If
End Function