Altura de la cabecera de un ListView en VB2005

Yo queria saber como se puede obtener el alto (height) de la cabecera de un control ListView ya que el control carece de esta propiedad.
Encontre este codigo para VB6 pero no se como pasarlo a VB2005 muy bien.
Yo parto de la idea de que casi todo es igual, como cambiar Long por Integer, y demas, pero en la linea "Call GetWindowRect(hwndHeader, rcHeader)" me aparece el siguiente error en VB2005: "intento de leer o escribir en la memoria protegida".
Os pongo los dos codigo: el del VB6 y como lo "adapto" yo en VB2005.
Gracias.
---------------------------------------
Visual Basic 6:
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Const LVM_FIRST = &H1000&
Const LVM_GETHEADER = (LVM_FIRST + 31)
Dim hwndHeader As Long
Dim rcHeader As RECT
Private Sub Obtener()
hwndHeader = SendMessage(Me.ListView1.hwnd, LVM_GETHEADER, 0&, ByVal 0&)
If hwndHeader Then
Call GetWindowRect(hwndHeader, rcHeader)
MsgBox rcHeader.Bottom - rcHeader.Top
End If
End Sub
---------------------------------------
Adaptacion en Visual Basic 2005:
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Integer, lpRect As RECT) As Integer
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Integer) As Integer
Private Structure RECT
Public Left As Long
Public Top As Long
Public Right As Long
Public Bottom As Long
End Structure
Const LVM_FIRST = &H1000&
Const LVM_GETHEADER = (LVM_FIRST + 31)
Dim hwndHeader As Long
Dim rcHeader As RECT
Private Sub Obtener()
hwndHeader = SendMessage(Me.ListView1.hwnd, LVM_GETHEADER, 0&, 0&)
If hwndHeader Then
Call GetWindowRect(hwndHeader, rcHeader)
MsgBox (rcHeader.Bottom - rcHeader.Top)
End If
End Sub
Respuesta
1
La verdad no intente de ver el codigo que pusistes pero si te entiendo bien esto es lo que estas buscando
MessageBox.Show(ListView1.Location.X, ListView1.Location.Y)
MessageBox.Show(ListView1.Size.Height, ListView1.Size.Width)
Creo que esta muy claro
Gracias por responder, pero la propiedad height del listview es el alto del control, no de la cabecera. ¿no?
Bueno, de todos modos gracias, ya no necesito este control para hacer lo que quiero.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas