Erweiterten File-Öffnen Dialog (Windows XP) anzeigen



  • Hallo,

    unter Windows XP gibt es einen erweiterten File-Öffnen-Dialog, bei dem links noch verschiedene Buttons (z.B. Desktop, Eigene-Dateien, Netzwerk, usw.) angezeigt werden.

    Wie kann ich diesen Dialog benutzen?

    Ich arbeite mit Borland Builder V5 Prof.



  • ...du updatest auf Version 6 😉



  • dass muss doch auch mit der V5 gehen, oder?



  • ich würde sagen, du darfst einfach den folgenden style nicht setzen. (erst ab windoof 5.0 (xp?))

    #define  OFN_EX_NOPLACESBAR         0x00000001
    

    siehe auch GetOpenFileName.

    für näheres siehe msdn.microsoft.com



  • Für alle die es interessiert:

    So geht's:

    OPENFILENAME ofn;       // common dialog box structure
    char szFile[260];       // buffer for file name
    HWND hwnd;              // owner window
    HANDLE hf;              // file handle
    
    // Initialize OPENFILENAME
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFile = szFile;
    //
    // Set lpstrFile[0] to '\0' so that GetOpenFileName does not 
    // use the contents of szFile to initialize itself.
    //
    ofn.lpstrFile[0] = '\0';
    ofn.nMaxFile = sizeof(szFile);
    ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
    ofn.nFilterIndex = 1;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    
    // Display the Open dialog box. 
    
    if (GetOpenFileName(&ofn)==TRUE) 
        hf = CreateFile(ofn.lpstrFile, GENERIC_READ,
            0, (LPSECURITY_ATTRIBUTES) NULL,
            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
            (HANDLE) NULL);
    


  • Wie muss ich den das von mathab anwenden das es geht??? Wenn ich es in ein ButtonClick setze passiert nichts.



  • Die Variable hwnd wird nicht initialisiert, damit wird in Zeile 9 ein ungültiges Fenster-Handle zugewiesen. Setz dort NULL oder Handle statt hwnd ein, dann wird auch der Dialog angezeigt.

    Und bitte nicht immer nur mit Kopieren und Einfügen arbeiten, sondern auch versuchen, zu verstehen, was der Code eigentlich macht. Beim Studieren der Funktion GetOpenFileName hättest du eigentlich in der Hilfe über CommDlgExtendedError stolpern müssen; mit letzterem kann man ermitteln, was beim Aufruf des Dialogs schiefgegangen ist.


Anmelden zum Antworten