Antoine.st Sub Classing in Dot Net

How to Sub-Class in Dot Net

サブクラス化といえば、メッセージ横取りの基本的テクニックです。旧 Visual Basic では、SetWindowLong() API によって実現していましたが、.NET Framework の Form クラスは、そのための オーバーライドメソッドを提供してくれます。

というわけで、サブクラス化がしたければ、そのメソッドをオーバーライドすればよいだけと、とっても簡単になっています。


    Protected Overrides Sub WndProc( _
        ByRef m As System.Windows.Forms.Message _
    )
        If m.Msg = WM_COPYDATA Then
            Dim cds As COPYDATASTRUCT

            cds = _
                CType( _
                    Marshal.PtrToStructure( _
                        m.LParam, _
                        GetType(COPYDATASTRUCT)), _
                    COPYDATASTRUCT)
            TextBox3.Text = "string is : " & cds.lpData
        End If

        MyBase.WndProc(m)

    End Sub