PDA

Visualizza la versione completa : [VC++] Leggere un file con MFC


Paulin
03-11-2005, 09:13
Faccio un po' fatica a muovermi in mezzo a questo ambiente di sviluppo. Con il codice che segue riesco ad aprire e leggere un file da un percorso predefinito e poi sovrascrivo il contenuto del file:



CApriFileApp::CApriFileApp()
{

CFile mioFile;
char* NomeFile = "C:\\test\\mioFile.txt";

( !mioFile.Open( NomeFile, CFile::modeCreate | CFile::modeReadWrite ) );

CString testo;
testo = "Messaggio del testo";
mioFile.SeekToEnd();
mioFile.Write(testo, testo.GetLength());
mioFile.Close();

}
Vorrei maneggiare l'oggetto CFile restituito nella creazione spontanea del MFC Wizard e corrispondente alla funzione OnFileOpen, In pratica al posto del percorso predefinito che ho adoperato sopra, vorrei utilizzare il DialogBox di Windows della voce File/Apri del menu principale.

L'identificativo corrispondente che mi ritrovo nella mappa dei messaggi incorporato in questo codice:
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)L'applicativo cos generato mi apre la finestra di dialogo con richiesta di OK, ma non saprei proprio in che modo me lo restituisce sul codice (e non so neanche se sono riuscito a spiegarmi!) :master: .

Qualche indicazione?

Grazie anticipate!

Paulin
06-11-2005, 16:30
Ho trovato la soluzione, e la riporto nel caso a qualcuno potesse servire. Questa la porzione di codice che aggiungo al sorgente


void CmyApp::OnFileOpen()
{

CString fileName;

if (!DoPromptFileName(fileName, AFX_IDS_OPENFILE,
OFN_HIDEREADONLY | OFN_FILEMUSTEXIST,
TRUE, NULL))
{
return ;
}

AfxGetApp()->OpenDocumentFile(fileName);

CFile myFile;
( !myFile.Open( fileName, CFile::modeCreate | CFile::modeReadWrite ) );

//...l'oggetto myFile contiene il file selezionato dal Dialog Box.

}

Questa la riga di comando da aggiungere alla mappa dei messaggi:

ON_COMMAND(ID_FILE_OPEN, CmyApp::OnFileOpen)

Loading