Altura de la cabecera de un ListView
Publicado por Consultador (10 intervenciones) el 11/12/2006 11:01:16
Hola. Quisera saber como se puede obtener el alto (height) de la cabecera de un control ListView ya que el control carece de esta propiedad.
Supongo que el tamaño viene dado por el sistema ya que al cambiar el tamaño de la fuente del control no se cambia el tamaño de la cabecera. Pero he comprobado que algunos programas tienen la cabecera de sus ListView mas grande y otros mas pequeña.
Gracias.
He encontrado este codigo para VB6 pero no se como pasarlo a VB2005 ya que me da error en la linea donde pone ERROR en VB2005: "Intento de leer o escribir en la memoria protegida. A menudo, esto indica que hay otra memoria dañada.":
------------------------------------------------------------------------------------------------------------------------------
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) 'ERROR
MsgBox rcHeader.Bottom - rcHeader.Top
End If
End Sub
Supongo que el tamaño viene dado por el sistema ya que al cambiar el tamaño de la fuente del control no se cambia el tamaño de la cabecera. Pero he comprobado que algunos programas tienen la cabecera de sus ListView mas grande y otros mas pequeña.
Gracias.
He encontrado este codigo para VB6 pero no se como pasarlo a VB2005 ya que me da error en la linea donde pone ERROR en VB2005: "Intento de leer o escribir en la memoria protegida. A menudo, esto indica que hay otra memoria dañada.":
------------------------------------------------------------------------------------------------------------------------------
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) 'ERROR
MsgBox rcHeader.Bottom - rcHeader.Top
End If
End Sub
Valora esta pregunta


0