Hallo Leute,
in habe, wie ihr schon gelesen habt ein Problem mit dem drag and drop in ein ListView.
Hier mein Quellcode
Spoiler anzeigen
#include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <WinAPISys.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
Global Const $WM_DROPFILES = 0x0233
Global $gaDropFiles[1], $str = ""
$hGUI = GUICreate('Test',550,300,-1,-1, -1,$WS_EX_ACCEPTFILES)
$idList=GUICtrlCreateListView('Datei|Größe|Hash',10,35,530,240,$ES_AUTOVSCROLL+$ES_READONLY+$WS_VSCROLL)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
_GUICtrlListView_SetColumnWidth($idList,0,390)
_GUICtrlListView_SetColumnWidth($idList,1,100)
_GUICtrlListView_SetColumnWidth($idList,2,250)
GUIRegisterMsg(0x0233, "WM_DROPFILES")
GUIRegisterMsg ($WM_DROPFILES, "WM_DROPFILES_FUNC")
GUISetState()
While 1
Switch GUIGetMsg()
Case -3
Exit
Case $GUI_EVENT_DROPPED
$str = ""
For $i = 0 To UBound($gaDropFiles) - 1
$str &= "|" & $gaDropFiles[$i]
Next
GUICtrlSetData($idList, $str)
EndSwitch
WEnd
Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam)
Local $nSize, $pFileName
Local $nAmt = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", 0xFFFFFFFF, "ptr", 0, "int", 255)
For $i = 0 To $nAmt[0] - 1
$nSize = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", 0, "int", 0)
$nSize = $nSize[0] + 1
$pFileName = DllStructCreate("char[" & $nSize & "]")
DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", DllStructGetPtr($pFileName), "int", $nSize)
ReDim $gaDropFiles[$i+1]
$gaDropFiles[$i] = DllStructGetData($pFileName, 1)
$pFileName = 0
Next
EndFunc ;==>_WM_DROPFILES_FUNC
Func WM_DROPFILES($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $wParam, $lParam
Local $aFileList
Switch $hWnd
Case $hGUI
$aFileList = _WinAPI_DragQueryFileEx($wParam)
If IsArray($aFileList) Then
For $A = 1 To $aFileList[0]
ConsoleWrite($aFileList[$A] & @CRLF)
Next
EndIf
_WinAPI_DragFinish($wParam)
Return 0
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_DROPFILES
Die Dateinamen werden bei mir in den Header des ListViews gepackt, warum?
Und warum erhalte ich den Fehler, dass die Konstante $WM_DROPFILES ( Zeile 8 ) bereits definiert ist?
Gruß Gremlin