VB6フォームの位置をデスクトップ座標で変更する

スポンサーリンク

VB6 では、Win32API の SystemParametersInfo 関数からワークエリアを取得します。General で SystemParametersInfo 関数の宣言をしておいてください。

サンプルコード

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

VB6.0 以前
Option Explicit

' SystemParametersInfo 関数
Private Declare Function SystemParametersInfo Lib "USER32.DLL" Alias "SystemParametersInfoA" ( _
    ByVal uAction  As Long, _
    ByVal uParam   As Long, _
    ByRef lpvParam As Any,  _
    ByVal fuWinIni As Long  _
) As Long

' Rectangle 構造体
Private Type Rectangle
    Left   As Long
    Top    As Long
    Width  As Long
    Height As Long
End Type

' ワークエリアを取得する
Private Const SPI_GETWORKAREA As Long = 48
VB6.0 以前
    ' Rectangle 構造体を宣言する
    Dim tRectangle As Rectangle

    ' ワークエリアを取得する
    Call SystemParametersInfo(SPI_GETWORKAREA, ByVal 0&, tRectangle, ByVal 0&)

    ' tRectangle を省略する
    With tRectangle
        ' ピクセルから Twip に変換する
        .Left   = .Left   * Screen.TwipsPerPixelX
        .Width  = .Width  * Screen.TwipsPerPixelX
        .Top    = .Top    * Screen.TwipsPerPixelY
        .Height = .Height * Screen.TwipsPerPixelY

        ' ワークエリアの中央に表示する
        Call Me.Move((.Width - .Left - Me.Width) \ 2, (.Height - .Top - Me.Height) \ 2)

        ' ワークエリアいっぱいに表示する場合
        Call Me.Move(.Left, .Top, .Width, .Height)
    End With

関連するリファレンス

準備中です。

スポンサーリンク