Ja - durch Franks Dll ist man ganz schön verwöhnt worden. Leider muss man Listviews so Einiges beibringen, bevor sie das können.
Hier ist mal ein Code, mit dem du den Klick auf einen Headerbutton auswerten kannst. Dann musst du nur noch den Code von Roland auf das entsprechende Listview anwenden.
$H Windows.ph
$H commctrl.ph
Struct LVHitTestInfo = X&,Y&,flags&,Item&,SubItem&
Declare LVHTI#,LView&,l%
Dim LVHTI#,LVHitTestInfo
Proc LV_HitTest
Parameters LV&,X%,Y%
~GetCursorPos(LVHTI#)
~ScreenToClient(LV&,LVHTI#)
SendMessage(LV&,~LVM_SUBITEMHITTEST,0,LVHTI#)
Return LVHTI#.SubItem&
EndProc
Cls
LView& = Create("GridBox",%hwnd,"Test 0;0;100;Test 1;0;100;Test 2;0;100;Test 3;0;100",0,200,10,410,200)
var Header&=sendmessage(Lview&,~LVM_GETHEADER,0,0)'
setstyle Header&,$50000002'--Header aktivieren
WhileLoop 0,4
AddString(LView&,"0 Test " + Str$(&Loop) + "|1 Test " + Str$(&Loop) + "|2 Test " + Str$(&Loop) + "|3 Test " + Str$(&Loop))
Wend
While 1
WaitInput
l% = LV_HitTest(LView&,%mousex,%mousey)
If getfocus(LView&)
Locate 0,0
If (&wParam=0)
messagebox("und jetzt \nSpalte "+str$(l%)+"\nberechnen..","",32)
Else
Print GetText$(LView&,LVHTI#.Item&,LVHTI#.SubItem&)
EndIf
EndIf
Wend
Alles anzeigen
Alles anzeigen