#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
$iItemOld = -1
$iSubItemOld = -1
Dim $aData[10][3]
For $i = 0 To 9
$aData[$i][0] = 'Flight Crew ' & StringFormat('%02d', $i)
$aData[$i][1] = StringFormat('%04d/%02d/%02d', Random(2009, 2011, 1), Random(1, 12, 1), Random(1, 28, 1))
$aData[$i][2] = StringFormat('%04d/%02d/%02d', Random(2008, 2009, 1), Random(1, 12, 1), Random(1, 28, 1))
Next
$hMainGui = GUICreate('Demo', 400, 300)
$hListView = GUICtrlCreateListView('Name|Pass Date|Expire Date', 5, 5, 490, 290)
GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
For $i = 0 To 9
_GUICtrlListView_AddItem($hListView, $aData[$i][0], $i)
_GUICtrlListView_AddSubItem($hListView, $i, $aData[$i][1], 1)
_GUICtrlListView_AddSubItem($hListView, $i, $aData[$i][2], 2)
Next
;$hHeader = _GUICtrlListView_GetHeader($hListView)
GUICtrlSendMsg($hListView, $LVM_SETCOLUMNWIDTH, 0, -1)
GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iCode, $tNMHDR, $tInfo
If Not IsHWnd($hListView) Then $hListView = GUICtrlGetHandle($hListView)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
$iCode = DllStructGetData($tNMHDR, 'Code')
Switch $hWndFrom
;Case $hHeader
;ToolTip('')
Case $hListView
Switch $iCode
Case $NM_CLICK;$LVN_HOTTRACK
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
$iItem = DllStructGetData($tInfo, 'Index')
$iSubItem = DllStructGetData($tInfo, 'SubItem')
If $iItem <> -1 And $iSubItem <> -1 Then
If $iItemOld <> $iItem Then
$iItemOld = $iItem
EndIf
If $iSubItemOld <> $iSubItem Then
$iSubItemOld = $iSubItem
EndIf
ToolTip(_GUICtrlListView_GetItemText($hListView, $iItemOld, $iSubItemOld))
;ToolTip($aData[$iItemOld][$iSubItemOld])
Else
ToolTip('')
EndIf
;Case Else
;ToolTip('')
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY