フォームを常に最前面に表示する
以下のSetWindowTopを使うと 指定したフォームが常に最前面に表示されるようにできる。非アクティブの場合でも他のウィンドウの下に隠れることはない。最前面指定を解除するには後で紹介するCancelWindowTopを使用する。
なお、最前面指定されたウィンドウ同士ではその都度優劣が決定される。
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 '■SetWindowTop
'■機能:ウィンドウを常に最前面に表示する。この指定を解除するにはCancelWindowTop関数を使う。
'■使用例:Call SetWindowTop(Me.hWnd)
Public Sub SetWindowTop(hWnd As Long)Const HWND_TOPMOST = -&H1 '常に最前面
Const SWP_NOSIZE = &H1 'サイズ変更しない
Const SWP_NOMOVE = &H2 '位置変更しないCall SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
End Sub
使用例
Call SetWindowTop(Me.hWnd)
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 '■CancelWindowTop
'■機能:SetWindowTop関数の指定を解除する。
'■使用例:Call SetWindowTop(Me.Hwnd)
Public Sub CancelWindowTop(hWnd As Long)Const HWND_NOTOPMOST = -&H2
Const SWP_NOSIZE = &H1 'サイズ変更しない
Const SWP_NOMOVE = &H2 '位置変更しない
Const SWP_SHOWWINDOW = &H40 'ウィンドウを表示Call SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE Or SWP_SHOWWINDOW)
End Sub