Lemmens Peter Posted March 12, 2007 Share Posted March 12, 2007 Hi everybody, I'm trying to make a program that displays a MessageBox after some files are dropped onto the gui. Can anybody help me please ? I already have the following code but it seems that "SpecialEvents" is NOT run when some files are dropped into the gui. Thank you, Peter CODE#include <GUIConstants.au3> Opt("GUICoordMode",2) Opt("GUIResizeMode", 1) Opt("GUIOnEventMode", 1) $parent1 = GUICreate("Parent1", 320,320, @DesktopWidth/2-10, @DesktopHeight/2-45, -1, $WS_EX_ACCEPTFILES) GUICtrlSetState($parent1,$GUI_DROPACCEPTED) GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents") GUISetOnEvent($GUI_EVENT_MINIMIZE, "SpecialEvents") GUISetOnEvent($GUI_EVENT_RESTORE, "SpecialEvents") GUISetOnEvent($GUI_EVENT_DROPPED, "SpecialEvents") GUISetState(@SW_SHOW) ; Just idle around While 1 Sleep(10) Wend Func SpecialEvents() Select Case @GUI_CTRLID = $GUI_EVENT_CLOSE MsgBox(0, "Close Pressed", "ID=" & @GUI_CTRLID & " WinHandle=" & @GUI_WINHANDLE) Exit Case @GUI_CTRLID = $GUI_EVENT_MINIMIZE MsgBox(0, "Window Minimized", "ID=" & @GUI_CTRLID & " WinHandle=" & @GUI_WINHANDLE) Case @GUI_CTRLID = $GUI_EVENT_RESTORE MsgBox(0, "Window Restored", "ID=" & @GUI_CTRLID & " WinHandle=" & @GUI_WINHANDLE) Case @GUI_CTRLID = $GUI_EVENT_DROPPED MsgBox(0, "Files dropped", " @GUI_DRAGID = " & @GUI_DRAGID & " @GUI_DROPID = " & @GUI_DROPID & " @GUI_DRAGFILE = " & @GUI_DRAGFILE) EndSelect EndFunc Link to comment Share on other sites More sharing options...
Bob Wya Posted March 12, 2007 Share Posted March 12, 2007 Yeh it doesn't work for me either mate... I think the GUI event code is broken. I see the cursor change to a drop icon over the Window control which accepts files (a TreeViewControl) but no event is triggered.... :-( HELP!! Bob Wya Link to comment Share on other sites More sharing options...
Bob Wya Posted March 12, 2007 Share Posted March 12, 2007 BTW your script is wrong: -1, $WS_EX_ACCEPTFILES) should be: -1, -1, $WS_EX_ACCEPTFILES) as that constant is an extended style option. Still can't figure my problem out!! Oh well... Bob Wya Link to comment Share on other sites More sharing options...
xcal Posted March 12, 2007 Share Posted March 12, 2007 First, GUICtrlSetState is for setting the state of a control, not a gui. I pilfered this from lazycat: expandcollapse popup;pilfered from lazycat #include <GUIConstants.au3> Global $WM_DROPFILES = 0x233 Global $gaDropFiles[1], $str = "" ### Koda GUI section start ### $hGUI = GUICreate("Test", 400, 200, 219, 178, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST)) $hList = GUICtrlCreateList("", 5, 5, 390, 190) GUICtrlSetState (-1, $GUI_DROPACCEPTED) GUISetState(@SW_SHOW) ### Koda GUI section end ### GUIRegisterMsg ($WM_DROPFILES, "WM_DROPFILES_FUNC") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_DROPPED $str = "" For $i = 0 To UBound($gaDropFiles) - 1 MsgBox(0, '', $gaDropFiles[$i]) ; i just changed this part. this is where the file paths get spit out Next 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 How To Ask Questions The Smart Way Link to comment Share on other sites More sharing options...
Lemmens Peter Posted March 14, 2007 Author Share Posted March 14, 2007 (edited) Your code works great ! Thanx Xcal ! (and lazycat offcourse) After seen the code, I was wondering if I could use "@GUI_DRAGFILE" instead to see the file(s) It seems to work fine if only 1 file is dropped in the editbox but it does not work if more then 1 file is dropped in the editbox. Maybe something to investigate further by the developpers ? (Or maybe I used not the right code) Peter ---------------------------------------------------------------------------------------------------------- #include <GUIConstants.au3> Global $WM_DROPFILES = 0x233 Global $gaDropFiles[1], $str = "" ### Koda GUI section start ### $hGUI = GUICreate("Test", 400, 200, 219, 178, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_TOPMOST)) $hList = GUICtrlCreateList("", 5, 5, 390, 190) GUICtrlSetState (-1, $GUI_DROPACCEPTED) GUISetState(@SW_SHOW) ### Koda GUI section end ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_DROPPED $str = "" MsgBox(4096,"",@GUI_DRAGFILE) EndSwitch WEnd Edited March 14, 2007 by Lemmens Peter Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now