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

スポンサーリンク

フォームを常に最背面に表示したい場合は、Win32 API に頼ることになります。FindWindow 関数で Program Manager という特別なウィンドウ ハンドルを得て、そのハンドルを SetParent 関数で親ウィンドウのハンドルにすることで再背面を実現します。

まずは、ベタな方法からやってみましょう。初めに、API の宣言をしておく必要があります。

サンプルコード

以下にサンプルコードを示します。

VB6.0 以前
Option Explicit

' FindWindow 関数
Private Declare Function FindWindow Lib "USER32.DLL" Alias "FindWindowA" ( _
    ByVal lpClassName  As String, _
    ByVal lpWindowName As String  _
) As Long

' SetParent 関数
Private Declare Function SetParent Lib "USER32.DLL" ( _
    ByVal hWndChild     As Long, _
    ByVal hWndNewParent As Long  _
) As Long

' ここから先が使用例になります
Private Sub Command1_Click()
    ' Program Manager のハンドルを取得する
    Dim hProgramManagerHandle As Long
    hProgramManagerHandle = FindWindow(vbNullString, "Program Manager")

    ' 正しく取得できた場合は、Program Manager を親ウィンドウに設定する
    If hProgramManagerHandle <> 0 Then
        Call SetParent(Me.hWnd, hProgramManagerHandle)
    End If
End Sub

次に TopMost プロパティに習って、BottomMost プロパティのようなものを作ってみましょう。このプロパティを True に設定すると再背面での表示になり、False に設定すると元に戻るようなイメージになります。

ここから先は保留中...

関連するリファレンス

準備中です。

スポンサーリンク