When you select multiple items, the item you actually click on is the first one in the array, which is why I made it show the array. Also, note that the list box is made to not sort the items. Hopefully, this will help:
 
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
Global $__aGUIDropFiles = 0
$Form1 = GUICreate("Form1", 600, 229, -1, -1, -1, $WS_EX_ACCEPTFILES)
$List1 = GUICtrlCreateList("", 16, 24, 545, 175, $WS_BORDER) ; Unsorted list!!!!
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES')
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $GUI_EVENT_DROPPED
			_ArrayDisplay($__aGUIDropFiles)
			$sList = _ArrayToString($__aGUIDropFiles, "|", 1) ; The 1 is to start at array[1] (second item), since the array's first item array[0] is the item count
			GUICtrlSetData($List1, "") ; Clears the list
			GUICtrlSetData($List1, $sList) ; Sets new data
	EndSwitch
WEnd
Func WM_DROPFILES($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $lParam
    Switch $iMsg
        Case $WM_DROPFILES
            Local Const $aReturn = _WinAPI_DragQueryFileEx($wParam)
            If UBound($aReturn) Then
                $__aGUIDropFiles = $aReturn
            Else
                Local Const $aError[1] = [0]
                $__aGUIDropFiles = $aError
            EndIf
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_DROPFILES