GetOpenFileName Dialog



  • Ich hab en Problem mit dem erstellen eines GetOpenFileName Dialogs.

    ofn.lStructSize       = sizeof (OPENFILENAME) ;
    			ofn.hwndOwner         = hwnd ;
    			ofn.hInstance         = NULL ;
    			ofn.lpstrFilter       = TEXT("Alle Dateien (*.*)\0*.*\0\0");
    			ofn.lpstrCustomFilter = NULL ;
    			ofn.nMaxCustFilter    = 0 ;
    			ofn.nFilterIndex      = 0 ;
    			ofn.lpstrFile         = szFilepath; // Wenn ich hier NULL eintrage funktioniert es
    			ofn.nMaxFile          = MAX_PATH ;
    			ofn.lpstrFileTitle    = szFilename;
    			ofn.nMaxFileTitle     = MAX_PATH ;
    			ofn.lpstrInitialDir   = NULL ;
    			ofn.lpstrTitle        = NULL ;
    			ofn.Flags             = 0 ;
    			ofn.nFileOffset       = 0 ;
    			ofn.nFileExtension    = 0 ;
    			ofn.lpstrDefExt       = TEXT ("txt") ;
    			ofn.lCustData         = 0L ;
    			ofn.lpfnHook          = NULL ;
    			ofn.lpTemplateName    = NULL ;
    

    im prinzip funktioniert es, nur leider brauch ich .lpstrFile um an den Path ranzukommen. Ich kanns mir einfach nicht erklären...

    //edit mit funktionieren mein ich, dass der Dialog erscheint.

    mfg tobZel



  • dann solltest du vielleicht zeigen wie du szFilepath deklariert hast



  • TCHAR szFilename[MAX_PATH];
    TCHAR szFilepath[MAX_PATH];
    

    sind beide gleich. Und das szFilename wird perfekt ausgefüllt aber eben nur wenn ich NULL angebe wo szFilepath hingehört.

    mfg tobZel



  • Ich weiss jetzt auch net genau was bei deinem falsch ist aber ich machs immer so:

    boolean Create_Dialog_Files_Open(HWND Parent, char *InitDir, char *DefFile, char *filterExtension){
    
    	OPENFILENAME		ofn;
    	int			ok;
    
    	memset(&ofn, 0, sizeof(ofn));
    	ofn.lStructSize = sizeof(ofn);
    	ofn.hwndOwner = Parent;
    	ofn.nMaxFile = MAX_PATH;
    	ofn.nMaxFileTitle = MAX_PATH;
    	ofn.lpstrTitle = NULL;
    	ofn.lpstrInitialDir = InitDir;
    	ofn.lpstrFile = DefFile;
    //	ofn.lpstrFilter = "Textdatei (*.txt)\0*.txt\0Alle Dateien (*.*)\0*.*\0\0";
    	ofn.lpstrFilter = filterExtension;
    	ofn.Flags = OFN_FILEMUSTEXIST;	
    	ok = GetOpenFileName(&ofn);
    	return ok;
    }
    


  • bool Create_Dialog_Files_Open(HWND Parent, TCHAR *DefFile, TCHAR *filterExtension){
    
        OPENFILENAME        ofn;
        int            ok;
    
        memset(&ofn, 0, sizeof(ofn));
        ofn.lStructSize = sizeof(ofn);
        ofn.hwndOwner = Parent;
        ofn.nMaxFile = MAX_PATH;
        ofn.nMaxFileTitle = MAX_PATH;
        ofn.lpstrTitle = NULL;
        ofn.lpstrInitialDir = NULL;
        ofn.lpstrFile = DefFile;
        ofn.lpstrFilter = filterExtension;
        ofn.Flags = OFN_FILEMUSTEXIST;   
        ok = GetOpenFileName(&ofn);
        return ok;
    }
    

    Wenn ich die funktion so aufrufe kommt der dialog:

    Create_Dialog_Files_Open(hwnd, NULL, TEXT("Alle Dateien (*.*)\0*.*\0\0"));
    

    so nicht:

    Create_Dialog_Files_Open(hwnd, szFilepath, TEXT("Alle Dateien (*.*)\0*.*\0\0"));
    

    wenn der dialog nicht kommt ist ok=0

    Wenn ich die Datei nicht als unicode kompiliere kommt in keinen fällen der Dialog.

    Ich weiß echt nicht mehr weiter 😞

    mfg tobZel



  • szFilepath[0] = TEXT('\0');
    

    steht doch auch so in der Doku:

    [quote]Pointer to a buffer that contains a file name used to initialize the File Name edit control. The first character of this buffer must be NULL if initialization is not necessary.[/quote]



  • 🙂
    funkt wunderbar thx

    mfg tobZel


Anmelden zum Antworten