REM Open or select multiple files
      
      OFN_ALLOWMULTISELECT = &200  :REM Thanks to Michael Hutton for ADD WIN CONSTANTS
      OFN_EXPLORER = &80000
      OFN_HIDEREADONLY = &4
      OFN_OVERWRITEPROMPT = &2
      
      REM Define OpenFile Structure for Open Dialog box
      DIM Ofn{lStructSize%, hwndOwner%, hInstance%, lpstrFilter%, \
      \      lpstrCustomFilter%, nMaxCustFilter%, nFilterIndex%, \
      \      lpstrFile%, nMaxFile%, lpstrFileTitle%, \
      \      nMaxFileTitle%, lpstrInitialDir%, lpstrTitle%, \
      \      flags%, nFileOffset{l&,h&}, nFileExtension{l&,h&}, \
      \      lpstrDefExt%, lCustData%, lpfnHook%, lpTemplateName%}
      DIM FileName% 7999  :REM Room for 256 file titles.
      filter$ = "Media files"+CHR$0+"*.MP3;*.WMA;*.WAV;*.MID"+CHR$0+"All files"+CHR$0+"*.*"+CHR$0+CHR$0
      Ofn.lStructSize% = DIM(Ofn{})
      Ofn.hwndOwner% = @hwnd%
      Ofn.lpstrFilter% = !^filter$
      Ofn.lpstrFile% = FileName%        :REM A pointer to where all the file names are returned.
      Ofn.nMaxFile% = 8000
      Ofn.flags% =   OFN_HIDEREADONLY OR OFN_ALLOWMULTISELECT OR OFN_EXPLORER
      
      DIM Song%(256) :REM Holds offset to start of song(n)'s filename in returned string.
      
      SYS "GetOpenFileName", Ofn{} TO R%  :REM Normal Open Dialog operation
      a$=""
      
      IF $$FileName%="" THEN PRINT "None Selected":END
      
      nFiles%=0
      IF Ofn.nFileExtension.l&  THEN
        nFiles%=1
      ELSE :REM More than one file
        I%=Ofn.nFileOffset.l& : REM First file name starts at FileName%?nFileOffset.l&
        Song%(nFiles%)=I% : REM Format in FileName%  Path null title1 null title2 null title3 null : I% points to first null
        REPEAT
          WHILE FileName%?I% >0  AND  I% < 7999 :REM Look for Zero's that terminate title strings.
            I%+=1
          ENDWHILE
          nFiles%+=1 :I%+=1
          Song%(nFiles%)=I%  :REM Save the position of the title within $$FileName%
          :REM Song (n)'s filename starts at Song%(n) offset from FileName%
        UNTIL FileName%?I%=0 OR nFiles%=256
      ENDIF
      Fn$=$$FileName%
      
      
      REM Test
      PRINT "Number of files :"; nFiles%
      IF nFiles%>1 THEN
        FOR Trk%=0 TO nFiles%-1
          a$=Fn$+"\"+$$(FileName%+Song%(Trk%))
          PRINTa$
        NEXT
      ELSE a$=Fn$
      ENDIF
      
      END