Here's a basic solution that uses a bit of IanM's Matrix1Utils.
#constant WM_DROPFILES 0x233
set window on
set display mode 800, 600, 32, 1
set window client size 800, 600
sync on : sync rate 30 : sync
set text opaque
global dbp_hWnd as dword
dbp_hWnd = get dbpro window()
global hDrop as dword
global ptrDropName as dword
ptrDropName = alloc(0xFF)
fileName as string
fileExt as string
load dll "shell32", 1
call dll 1, "DragAcceptFiles", dbp_hWnd, 1
set message callback "WndProc"
do
// wait messages.
if hDrop <> 0
numFiles = call dll(1, "DragQueryFileA", hDrop, 0xFFFFFFFF, 0, 0)
print "numFiles: ", numFiles
for n = 0 to numFiles-1
temp = call dll(1, "DragQueryFileA", hDrop, n, ptrDropName, 0xFF)
fileName = peek string(ptrDropName)
fileExt = lower$(right$(fileName, 4))
if fileExt = ".png" or fileExt = ".jpg" or fileExt = ".bmp"
img = find free image()
load image fileName, img
paste image img, screen width()-image width(img), screen height()-image height(img), 1
box screen width()-image width(img), screen height()-image height(img), screen width(), screen height(), rgb(128, 1, 1, 1) // fade a little.
delete image img // no longer needed.
endif
print "#", n, ": ", fileName
next n
call dll 1, "DragFinish", hDrop
hDrop = 0
endif
sync:nice wait 20
loop
function WndProc(hWnd as dword, msg as dword, wParam as dword, lParam as dword)
select msg
case WM_DROPFILES
print "WM_DROPFILES: ", msg, " - ", wParam, " - ", lParam
hDrop = wParam
endcase
case default
`print msg, " - ", wParam, " - ", lParam
endcase
endselect
endfunction result
Not tried to break it yet, but if you run it, open up a folder, select some files and drop them onto the window, it will give you the full path to each. As a bonus, image files will be loaded and pasted.
edit [updated code a little, just to deemphasise images and delete once drawn]:
- you can probably mess up this particular piece of code by dropping files twice in quick succession, the second overwriting the still-in-use hDrop pointer. You'll need a queue or seperate current/next-to-handle pointers.
- tried bringing files in from a few different contexts (explorer window, start menu, quick launch toolbar, another program's open file dialog, photo gallery, etc. - all working as you'd expect, though I was half expecting to run into some little DBP eccentricity

(if you're interested, shortcuts return the .lnk's themselves, not the actual file they point to)
- tried to test if DragFinish "releases memory that the system allocated for use in transferring file names to the application" properly. It does not seem to; if you drag and drop large quantities of files over and over you can start to accumulate a small memory leak that, while not even registering in the task manager graph, might be worth seeking a solution for if you expect your program to be receiving thousands of files this way.
(note: I'm using vista 32-bit, in case you find discrepancies.)