2012年7月4日水曜日

VB.NETで非アクティブなウィンドウをスムーズに移動できた

VB.NETで非アクティブなウィンドウをスムーズに移動したいのコードを下記に変更した。これなら再フォーカスの問題は発生しない。
Public Class Form1

    :

    Private Structure RECT
        Public Left As Integer
        Public Top As Integer
        Public Right As Integer
        Public Bottom As Integer
    End Structure

    Private Const WM_MOVING As Integer = &H216

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        Select Case m.Msg
            Case WM_MOVING
                Dim rect As RECT = Marshal.PtrToStructure(m.LParam, GetType(RECT))
                SetWindowPos(Me.Handle, HWND_TOPMOST, rect.Left, rect.Top, 0, 0, _
                             SWP_SHOWWINDOW Or SWP_NOSIZE)
            Case Else
        End Select
        MyBase.WndProc(m)
    End Sub


0 件のコメント: