Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

OpenFile über Includes

Uploader:Mitgliedraph ael
Datum/Zeit:07.04.2008 17:24:45

' main.bas - Hauptdatei
#Include Once "windows.bi"
#Include Once "win/commdlg.bi"
#Include "OpenFile.bi"
#Include "openfile.bas"

Declare Function DlgProc(ByVal hWnd As HWND, ByVal uMsg As UINT, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As Integer

   'Dialogform anzeigen
   hInstance=GetModuleHandle(NULL)
   DialogBoxParam(hInstance,Cast(ZString Ptr,IDD_DLG1), NULL, @DlgProc, NULL)

   ExitProcess(0)
   End

FUNCTION DlgProc(BYVAL hWin AS HWND, BYVAL uMsg AS UINT, BYVAL wParam AS WPARAM, _
   BYVAL lParam AS LPARAM) AS INTEGER

   DIM AS LONG id, Event, x, y
   DIM hBtn AS HWND
   DIM rect AS RECT
   DIM buff AS ZSTRING * 250

   SELECT CASE uMsg
      CASE WM_INITDIALOG
         '
      CASE WM_CLOSE
         EndDialog(hWin, 0)
         '
      CASE WM_COMMAND
         id=LOWORD(wParam)
         Event=HIWORD(wParam)
         SELECT CASE id
            CASE SF_FileOpen
               FileOpen()
               '
               '
         END SELECT
      CASE WM_SIZE
         '
      CASE ELSE
         RETURN FALSE
         '
   END SELECT
   RETURN TRUE

END FUNCTION



' OpenFile.bas:
SUB FileOpen()

   DIM hWin AS HWND
   '250000 Zeichen als Leerstring vorgeben (Damit auch ganz viele Dateien ausgewählt werden können
   '(überflüssige Leerzeichen werden später wieder entfernt)
   DIM AS STRING *250000 strFile = SPACE(249999)+ CHR(0)
   DIM OFN AS OpenFileName, RetStr AS STRING, Liste() AS STRING
   DIM X AS INTEGER, Y AS INTEGER, Z AS INTEGER

   CONST szNULL=!"\0"
   CONST szFilter   = "MP3-Dateien (*.mp3)" & szNULL & "*.mp3" & szNULL

   WITH OFN
      .lStructSize = SIZEOF(OpenFileName)
      .hwndOwner = hWin
      .hInstance = hInstance
      '"Arbeitsplatz" als Ausgangsordner vorgeben - ansprechen über Class ID
      .lpstrInitialDir = STRPTR("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}")
      .lpstrFile = STRPTR(strFile)
      .nMaxFile = SIZEOF(strFile)
      .lpstrFilter = STRPTR(szFilter)
      .lpstrTitle = STRPTR(" MP3-Datei auswählen (Mehrfachauswahl möglich)")
      'Flags: &H200   = Mehrfachauswahl möglich
      '       &H4&    = Kontrollkästchen "Schreibgeschützt" wird versteckt
      '       &H80000 = Dialoge des Win-Explorer werden genutzt
      .flags = &H200 OR &H4& OR &H80000
   END WITH

   IF GetOpenFileName(@OFN) THEN
      Y = 0
      REDIM Liste(Y)
      RetStr = TRIM(strFile)
      'Prüfen, ob CHR(0) im Rückgabestring enthalten (wenn ja -> mehrere Dateien markiert)
      IF INSTR(RetStr, CHR(0)) THEN
         'Mehrere Dateien ausgwählt -> Rückgabestring zerlegen und in Liste aufnehmen (jeder Listen-
         'eintrag = eine Datei);   WICHTIG: CHR(0) anhängen - letzter Teil wird sonst "vergessen"
         RetStr = RetStr & CHR(0)
         DO WHILE INSTR(RetStr, CHR(0))
            X = INSTR(RetStr, CHR(0))
            Liste(Y) = LEFT(RetStr, X - 1)
            'Rückgabestring um ausgelesenen Teil verkürzen
            RetStr = RIGHT(RetStr, LEN(RetStr) - X)
            Y = Y + 1
            REDIM PRESERVE Liste(Y)
         LOOP

         FOR X = 1 TO UBOUND(Liste)
            'Liste(0) = Verzeichnis; jeweiliger Dateiname wird mit "\" & Liste(X) angehängt
            'MessageBox nur temporär zur Anzeige; Später werden Dateien an die Audiogenie.Dll
            'von Stefan Töngi übergeben
            MessageBox(hWin, Liste(0) & "\" & Liste(X), "Ausgewählte Datei", 64)
         NEXT
      ELSE
         'Nur eine Datei ausgewählt - RetStr enthält kompletten Pfad
         MessageBox(hWin, RetStr, "Ausgewählte Datei", 64)
      END IF
   ELSE
      'Nix ausgewählt
      MessageBox(hWin, "Keine Dateien ausgewählt", "Keine Auswahl", 48)
   END IF

END SUB