File "DragnDrop.inc"

Path: /MyWebradios/inc/DragnDrop.inc
File size: 1.56 KB
MIME-type:
Charset: utf-8


' Change the 2 following constants when including this file, following your needs:
%ACTIVATE_DRAGNDROP_AT_DIALOG_CREATION = %TRUE
%ALLOW_ONLY_SINGLE_FILE_DRAGNDROP      = %TRUE
' Then implement the following Sub:
DECLARE SUB FileDropped(BYVAL myfile AS STRING)
' And finally call CB_DRAGNDROP at the very beginning of your Dialog CALLBACK

GLOBAL oDropFile AS DropFileI

MACRO CB_DRAGNDROP
    MACROTEMP i, fileCount, szFile
    SELECT CASE AS LONG CB.MSG

        CASE %WM_INITDIALOG
            oDropFile = CLASS "DropFileC"
            IF %ACTIVATE_DRAGNDROP_AT_DIALOG_CREATION THEN DragAcceptFiles CB.HNDL, %TRUE

        CASE %WM_DROPFILES
            DIM i AS LONG
            DIM fileCount AS LONG
            DIM szFile AS ASCIIZ * %MAX_PATH
            fileCount = DragQueryFile(CB.WPARAM, -1, BYVAL 0, 0)
            IF %ALLOW_ONLY_SINGLE_FILE_DRAGNDROP AND fileCount > 1 THEN
                MessageBox CB.HNDL,"Please drag and drop only 1 .mrw file","Error",%MB_ICONWARNING
                EXIT FUNCTION
            END IF
            FOR i = 0 TO fileCount - 1
                DragQueryFile CB.WPARAM, i, szFile, SIZEOF(szFile)
                oDropFile.OnDropFile(CB.HNDL, szFile)
            NEXT i
            DragFinish CB.WPARAM

        CASE %WM_DESTROY
            IF %ACTIVATE_DRAGNDROP_AT_DIALOG_CREATION THEN DragAcceptFiles CB.HNDL, %FALSE
    END SELECT
END MACRO

CLASS DropFileC
    INTERFACE DropFileI : INHERIT IUNKNOWN
        METHOD OnDropFile(BYVAL hDlg AS DWORD, BYVAL myfile AS STRING)
            FileDropped myfile
        END METHOD
    END INTERFACE
END CLASS