Öffnen/Speichern Standard Dialog



  • Ich habe in der Hilfe über den Dialog zum öffnen gelesen das man ofn_Explorer nicht vergessen soll, da sonst das Programm abstürzt. Das Programm stürzt ab und ich habe keine Ahnung wo ich dieses Stück unterbringen soll.



  • Also ich hab folgenden Code für den Speichern-Dialog verwendet.... weiß leider nicht mehr, wo ich den her habe. aber bei mir funktioniert's.

    //open window to get new folder
    
       OPENFILENAME ofn;       // common dialog box structure 
       wchar_t szFile[260];       // buffer for file name 
    
       // setzt erst mal die ganze struktur auf 0 
       ZeroMemory(&ofn, sizeof(ofn)); 
       // initialisiere die lStructSize variable 
       // braucht windows um zu checken ob du auch wirklich die richtige struktur übergibts 
       ofn.lStructSize = sizeof(ofn); 
       // hwnd ist das handle parent fenster, wenn du den code aus deiner fenster 
       // klasse aufrufst mach aus dem hwnd ein m_hWnd und es passt 
       ofn.hwndOwner = m_hWnd;
       // hier übergibts du nen buffer in dem window den ausgewählten filenamen 
       // speichern kann 
       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'; 
       // die maximale länge des filenames, braucht es damit windows nicht über deinen 
       // buffer hinaus schreibst falls der namen länger ist als einer buffer größe 
       ofn.nMaxFile = sizeof(szFile); 
       // das ist das was du unter dateityp in nem öffnen dialog siehst 
       // hier wärs: All (*.*) und Text (*.TXT) 
       ofn.lpstrFilter = L"All\0*.*\0Text\0*.TXT\0"; 
       // weis ich net auswending guckst du MSDN 
       ofn.nFilterIndex = 1; 
       // buffer du den filenamen ohne path, brauchen wir net also NULL 
       ofn.lpstrFileTitle = NULL; 
       // selbe wie nMaxFile nur diesmal für lpstrFileTitle 
       ofn.nMaxFileTitle = 0; 
       // verzeichnis von den die suche los gehen soll 
       ofn.lpstrInitialDir = NULL; 
       // flags: guckst du MSDN sind zuviele um hier alle aufzulisten =) 
       ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; 
    
       // Display the Save dialog box. 
       if ( GetSaveFileName( &ofn ) == TRUE ) 
       {.....
       }
       {
    

    Hoffe, das hilft dir weiter.

    Gruß, Amalthea



  • steff3 schrieb:

    Ich habe in der Hilfe über den Dialog zum öffnen gelesen das man ofn_Explorer nicht vergessen soll, da sonst das Programm abstürzt. Das Programm stürzt ab und ich habe keine Ahnung wo ich dieses Stück unterbringen soll.

    Quatsch. Mit

    CFileDialog myFileNamer(true, NULL, sDefaultFile, NULL, sFileFilter, NULL);
      if(myFileNamer.DoModal() == IDOK){
    }
    

    gehts prima. sDefaultFile ist ein Dateiname, der dem Benutzer vorgeschlagen werden kann. sFileFilter ist ein Filterstring (z.B. Alle Dateien, Winword Dateien etc.)

    sFileFilter = "All Files (*.*)| *.*|";
    

    OFN_EXPLORER braucht man nicht unbedingt. Mehr dazu in der MSDN.


Anmelden zum Antworten