Öffnen einer TxT-Datei



  • Guten Tag,
    ich hänge bei dem Problem fest ein TxT-File über FileOpen (mit grafischem fenster, in dem ich die datei auswählen kann) zu öffnen. Kann mir da bitte jemand weiter helfen?
    MfG Schorsch



  • FileOpen gibt's nicht, aber du meinst wahrscheinlich sowas hier: http://msdn.microsoft.com/en-us/library/ms646927(VS.85).aspx



  • Danke schonmal...

    wie das genau heißt weiß ich leider nicht. ich will einfach nur beim klicken auf einen button ein dialog geöffnen bekommen haben, bei dem ich ein file auswählen kann von dem er dann den pfad in einer variable speichert. hatte nur in einem buch von einer Basisklasse "FileDialog" gelesen, die eine unterklasse "FileName" hat, die den kompletten Dateinamen von der datei die man auswählt zurück gibt. im buch steht allerding nichts weiter dazu drinnen... wie das bsp. als code aussieht.

    MfG Schorsch



  • Warum liest du dir den Link denn nicht durch? Da wird auf folgendes Beispiel verwiesen:

    http://msdn.microsoft.com/en-us/library/ms646829(VS.85).aspx#open_file

    Struktur initialisieren, Funktion damit aufrufen - fertig!



  • ah ok danke...
    das kompilieren funktioniert nun so weit, allerdings kommt jetzt wenn ich auf den button drücke der fehler "Run-Time Check Failure #3 - The variable 'hWnd' is being used without being initialized." weißt du wie ich das hWnd initialisieren kann?



  • Setz hwndOwner einfach auf 0.



  • danke,
    jetzt gehts soweit ohne fehler, nur das sich das dialog fenster zum auswählen der datei nicht öffnen. das programm hängt sich einfach auf.
    mfg



  • Probier die Funktion mal, die sollte funktionieren:

    char *MyOpenFile(char *filename) {
    	OPENFILENAME ofn;       // common dialog box structure
    	char szFile[260];       // buffer for file name
    
    	// Initialize OPENFILENAME
    	ZeroMemory(&ofn, sizeof(ofn));
    	ofn.lStructSize = sizeof(ofn);
    	ofn.hwndOwner = 0;
    	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*.*\0Bitmap\0*.BMP\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) {
    		strncpy(filename,ofn.lpstrFile,MAX_PATH-1);
    	}else {
    		strcpy(filename,"");
    	}
    	return filename;
    }
    

    Du musst einfach einen char-Puffer allozieren (mit MAX_PATH Bytes Größe) und einen Zeiger darauf der Funktion übergeben. Die öffnet dann den Dialog und kopiert am Schluss den Dateinamen in deinen Puffer.



  • Und warum nicht einfach CFileDialog nutzen?


Anmelden zum Antworten