Mausklicks sind in 'normalen' Anwendungen nicht sehr häufig und können deshalb 'relativ gefahrlos' über
behandelt werden. Ich empfehle deshalb z.B. so etwas:
Code: Select all
#NoEnv
SetBatchLines, -1
Gui, Add, ListView, w790 r5 hwndHLVTAB2LVA gLVTAB2LVA vLVTAB2LVA -Wrap +Checked, a|b|c|d|e|f|g|h|i|j|k
Loop, 5
LV_Add("", StrSplit("a|b|c|d|e|f|g|h|i|j|k", "|")*)
Gui, Show, , LV Test
HHEADER := LV_GetHeader(HLVTAB2LVA)
OnMessage(0x0202, "WM_LBUTTONUP")
Return
GuiClose:
ExitApp
LVTAB2LVA:
Return
WM_LBUTTONUP(W, L, M, H) {
; HDM_HITTEST (0x1206) -> https://docs.microsoft.com/en-us/windows/win32/controls/hdm-hittest
Global HHEADER
If (H = HHEADER) {
VarSetCapacity(HDHTI, 16, 0) ; HDHITTESTINFO
NumPut(L << 48 >> 48, HDHTI, 0, "Int") ; Maus X
NumPut(L << 32 >> 48, HDHTI, 4, "Int") ; Maus Y
DllCall("SendMessage", "Ptr", H, "UInt", 0x1206, "Ptr", 0, "Ptr", &HDHTI) ; HDM_HITTEST
If (NumGet(HDHTI, 8, "Int") = 0x0004) { ; HHT_ONDIVIDER
Cols := DllCall("SendMessage", "Ptr", H, "UInt", 0x1200, "Ptr", 0, "Ptr", 0, "Int") ; HDM_GETITEMCOUNT
HLV := DllCall("GetParent", "Ptr", H, "UPtr") ; Handle des 'Eltern'-ListView
LVWControl := 0
Loop, %Cols% ; 0x101D ist LVM_GETCOLUMNWIDTH.
LVWControl += DllCall("SendMessage", "Ptr", HLV, "UInt", 0x101D, "Ptr", A_Index - 1, "Ptr", 0, "Int")
LVWControl += 20
GuiControl, MoveDraw, %HLV%, w%LVWControl%
Gui, Show, AutoSize
}
}
}
LV_GetHeader(HLV) {
; LVM_GETHEADER (0x101F) -> https://docs.microsoft.com/en-us/windows/win32/controls/lvm-getheader
Return DllCall("SendMessage", "Ptr", HLV, "UInt", 0x101F, "Ptr", 0, "Ptr", 0, "UPtr")
}