Hallo zusammen,
ich habe folgendes Problem:
Ich möchte in einem ListView das Symbol für die Sortierung in der entsprechenden Spaltenüberschrift darstellen. Durch ein bißchen Suchen bin ich darauf gestoßen, dass dies nur über die Windows API möglich ist.
Mit SendMessage(lvListView.hwnd, LVM_GETHEADER, 0, 0) bekomme ich das Handle des HeaderControls. Das ist soweit kein Problem.
Aber wenn ich dem HeaderControll die HDM_GETITEM Message schicke, erhalte ich immer 0 als Returncode. Ich bin mir nicht sicher, ob ich bei der Deklaration etwas falsch mache, also hier der aktuelle Stand meiner Bemühungen:
Deklaration:
Public Const HDM_GETITEM As Long = &H120B
Public Const HDM_SETITEM As Long = &H120C
Public Type LVCOLUMN
mask As Long
cxy As Long
pszText As Long
hbm As Long
cchTextMax As Long
fmt As Long
iSubItem As Long
iImage As Long
iOrder As Long
End Type
Declare Function SendMessageLVCOLUMN Lib "user32" _
Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal Msg As Long, _
ByVal wParam As Long, _
ByRef lpLVCOLUMN As LVCOLUMN) As Long
Aufruf:
Dim hHeaderHandle As Long
Dim header As LVCOLUMN
Dim column As Long
hHeaderHandle = SendMessage(lvListView.hwnd, LVM_GETHEADER, 0, 0)
header.mask = HDI_FORMAT
column = 2
Debug.Print SendMessageLVCOLUMN(hHeaderHandle, HDM_GETITEM, column, header)
Hat jemnd eine Idee wo der Fehler liegt? Die Spalte habe ich mal fest mit 2 codiert. Ich habe auch mit HDM_GETITEMCOUNT geprüft, dass der ListViewHeader 8 Saplten hat. Das ist auch der korrekte Wert.
Gruß
Dirk
|