VB6対応

 

Visual Basic 中学校 > VB6 サンプル >

フォームを常に最前面に表示する

 

以下のSetWindowTopを使うと 指定したフォームが常に最前面に表示されるようにできる。非アクティブの場合でも他のウィンドウの下に隠れることはない。最前面指定を解除するには後で紹介するCancelWindowTopを使用する。

なお、最前面指定されたウィンドウ同士ではその都度優劣が決定される。

 

1.フォームを常に最前面に表示する例

VB6対応

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)
 

 

2.フォームの最前面指定を解除する例

VB6対応

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

 


VB.NET2002対応 VB.NET2003対応 VB2005対応 → VB.NET2002以降ではFormTopMostプロパティで最前面表示を簡単に設定することができます。