_GUICtrlListView_GetHeader($hWnd) liefert komischen Wert

  • Hallo,

    ich habe folgendes Problem:

    ich lege eine Listview mit

    $zeile = "text1"&"|"&"Text2"&"|"&"Text3"
    $listview6 = GUICtrlCreateListView($Zeile, 10, 577, 970, 95)

    an. Wenn ich jetzte dan Handle zum Header der ListView mit

    _GUICtrlListView_GetHeader($listview6)

    ermitteln will, bekomme ich komische Werte zurück. Der Handle
    von Listview ist immer in der Größe um 88, der Handle für den
    Header ist immer in der Größe um um 1902012.
    Ist das richtig ?

    Ich vermute nicht, da weitergehende Funktionen, für den ich den
    handle des Headers benötige, nicht funktionieren.
    z.B.:
    $a = GUIGetCursorInfo()
    $Item_nr = _GUICtrlHeader_HitTest(_GUICtrlListView_GetHeader($listview6), $a[1], $a[2])

    hat jemand eine idee ?

    Danke und Grüße
    Asterix

    Einmal editiert, zuletzt von Asterix (10. Dezember 2008 um 12:29)

    • Offizieller Beitrag

    Das hat im wesentlichen zwei Gründe:

    1. Für die UDF-Funktionen sollte man immer das Handle statt der ID benutzen, also mit: $hListview = GUICtrlGetHandle($listview) der Variablen das Handle übergeben.

    2. Die Koordinaten bei _GUICtrlHeader_HitTest() sind relativ zum Listview (Header), nicht zum Fenster.

    So funktioniert dann auch die Abfrage der Header (Ergebnis ist der Index):

    Spoiler anzeigen
    [autoit]


    #include<GuiHeader.au3>
    #include<GuiListView.au3>
    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hGui = GUICreate("listview items", 220, 250, 100, 200, -1, $WS_EX_ACCEPTFILES)

    [/autoit] [autoit][/autoit] [autoit]

    $Listview = GUICtrlCreateListView("col1 |col2|col3 ", 10, 10, 200, 150)
    $hListview = GUICtrlGetHandle($Listview)
    $item1 = GUICtrlCreateListViewItem("item2|col22|col23", $listview)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $msg = GUIGetMsg()
    Switch $msg
    Case $Listview
    $a = GUIGetCursorInfo($hGui)
    $Item_nr = _GUICtrlHeader_HitTest(_GUICtrlListView_GetHeader($hListview), $a[0]-12, $a[1]-12)
    ToolTip($Item_nr[0])
    EndSwitch
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit]
  • Hallo Oscar,

    vielen Dank. Das wars.

    Jetzt funzt die ganze Sache


    Viele Grüße
    Asterix

    Einmal editiert, zuletzt von Asterix (10. Dezember 2008 um 12:28)