내가 setParent가 불려 갔을 때 사용하는 기본 창에 .NET의 ListView 컨트롤을 호스팅하고 있습니다 : 그것은 자식 창입니다에 내가 호스트 창에서 전송 WM 창 메시지를 가로 챌 수있는 방법호스팅 .NET 컨트롤이
Public Class LVControl
Public Shared Lv As New ListView
Shared Sub LvInit(ByVal hWnd As IntPtr)
Lv.Size = New System.Drawing.Size(256, 256)
Lv.Dock = Windows.Forms.DockStyle.Fill
Lv.Show()
NativeMethods.SetParent(Lv.Handle, hWnd)
End Sub
...
End Class
(내 ListView 컨트롤) ? 런타임에 컨트롤을 만들고 부모 폼이 없으므로 (옵션이 아닌) 어떻게 재정의 가능한 WndProc 함수를 구현할 수 있습니까? "기본 클래스의 하위를 재정의하지 않기 때문에 선언 할 수 없습니다."여기에 관리되는 코드를 사용하고 싶습니다. ...
Ps : 이제 부모 기본 윈도우에 대한 NativeWindow 클래스의 구현에 대해 설명합니다. 내 ListView 컨트롤,하지만 잘 모르는 방법을 알고 올바른 방향으로 오전?
UPDATE
감사 의견에, 나는 그것이 작동있어 :
Public Class myListView
Inherits ListView
Protected Overrides ReadOnly Property CreateParams() As CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
Dim hParent As IntPtr '= get parent hWnd here
cp.Parent = hParent
Return cp
End Get
End Property
Protected Overrides Sub WndProc(ByRef m As Message)
'handle messages here
MyBase.WndProc(m)
End Sub
End Class
는 지금은 CreateParams을 특성으로 부모 HWND를 포함하는 매개 변수를 전달하는 방법에 대한 마지막 질문이 있습니까? parent hWnd를 얻는 것은 내가 여기에 하드 코드되기를 원하지 않는 어떤 조건에 달려있다.
을있는 ListView에서 자신의 클래스를 파생와의 WndProc()을 재정의합니다. 또한 CreateParams를 재정의하고 Parent 속성을 설정하여 올바른 코드를 작성할 수 있습니다. –
고마워, 이제 그걸 파헤쳐 볼거야. 간단한 예를 들겠습니다. – ladybug