# Function Reference

# _GUICtrlListView_SimpleSort

Sorts a list-view control (limited)

#include <GuiListView.au3>
_GUICtrlListView_SimpleSort ( $hWnd, ByRef $vSortSense, $iCol [, $bToggleSense = True] )

## Parameters

$hWnd | Handle to the control
$vSortSense | Sets the defined sort order True - Sort Descending False - Sort Ascending Use a simple variable for a single column ListView Use an array for multicolumn ListViews: $aArray[0] - Order for first Column $aArray[1] - Order for second Column $aArray[n] - Order for last Column
$iCol | Column number
$bToggleSense | [optional] Toggle sort sense True - Toggle sort sense after sort (default) False - Sort sense unchanged after sort

## Return Value

None.

## Remarks

This is a basic sort function, for advanced sort see GUICtrlRegisterListViewSort().
Toggling sort sense is normal behaviour when sorting is initiated by a click on the column header.
The user can prevent this toggle by setting $bToggleSense to False when calling the function from elsewhere.
If the function is called from within several functions and the sort sense is to be toggled, it is important that $vSortSense be Global in scope.
Otherwise the sense will be reset each time that $vSortSense is created and toggling will be ineffective.

## Example

    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <StructureConstants.au3>
    #include <WindowsNotifsConstants.au3>

    Global $g_idListView, $g_bSortSense = True ; Set initial ascending sort

    Example()

    Func Example()
        GUICreate("ListView SimpleSort (v" & @AutoItVersion & ")", 300, 300)
        $g_idListView = GUICtrlCreateListView("Item", 10, 10, 280, 240)
        _GUICtrlListView_SetColumnWidth($g_idListView, 0, 260)
        Local $idButton_Add = GUICtrlCreateButton("Add Item", 10, 260, 80, 30)
        Local $idButton_Set = GUICtrlCreateButton("Reset Ascending Sort Order", 110, 260, 180, 30)

        GUISetState(@SW_SHOW)

        GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")

        While 1
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
                    ExitLoop
                Case $idButton_Add
                    Local $sData = Chr(Random(65, 90, 1))
                    GUICtrlCreateListViewItem($sData, $g_idListView)
                    _GUICtrlListView_SimpleSort($g_idListView, $g_bSortSense, 0, False) ; Prevent sort direction toggling for next insertion
                Case $idButton_Set
                    $g_bSortSense = False ; Reset for ascending sort when next sorted
            EndSwitch
        WEnd
    EndFunc   ;==>Example

    Func _WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
        #forceref $hWnd, $iMsg, $wParam

        Local $hWndListView = $g_idListView
        If Not IsHWnd($g_idListView) Then $hWndListView = GUICtrlGetHandle($g_idListView)
        Local $tNMHDR = DllStructCreate($tagNMLISTVIEW, $lParam)
        Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        Local $iCode = DllStructGetData($tNMHDR, "Code")
        Switch $hWndFrom
            Case $hWndListView
                Switch $iCode
                    Case $LVN_COLUMNCLICK ; A column was clicked
                        _GUICtrlListView_SimpleSort($hWndListView, $g_bSortSense, DllStructGetData($tNMHDR, "SubItem")) ; Sort direction for next sort toggled by default
                EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>_WM_NOTIFY