2009-06-17 16 views
6

So che le funzioni GetCurrentDirectory() e SetCurrentDirectory() esistono nel framework MFC, ma non ho un oggetto CFtpConnection nella mia applicazione. Ho una semplice classe derivata da CWinApp, e vorrei recuperare la sua directory di lavoro all'avvio del programma. Qual è il metodo più semplice per raggiungere questo obiettivo? Grazie in anticipo per i consigli.MFC: funzione GetCurrentDirectory

+0

Vedi http://msdn.microsoft.com/en-us/library/aa364934(VS.85).aspx ... niente a che fare con se o non si dispone di un oggetto CFtpConnection. – ChrisW

+0

Dupe: http://stackoverflow.com/questions/875249/how-to-get-current-directory – ChrisW

+0

In circostanze normali la cartella di lavoro sta per essere trovato nella cartella dei dati dell'applicazione utente e c'è una speciale API per ottenere posizioni di cartelle speciali. Quindi, devi decidere come stai gestendo la cartella di lavoro. –

risposta

15

GetCurrentDirectory è una semplice funzione API Win32, quindi basta chiamare in questo modo:

TCHAR currentDir[MAX_PATH]; 
GetCurrentDirectory(MAX_PATH, currentDir); 
+1

C'è lo stesso codice, ma utilizzando la classe CString (non dimenticate di chiamare 'ReleaseBuffer()' 'per il vostro oggetto CString'): ' CString CurDir; GetCurrentDirectory (MAX_PATH, curDir.GetBufferSetLength (MAX_PATH)); curDir.ReleaseBuffer(); ' – Mar

5

Presumo che si sta tentando di ottenere la directory in cui il file exe si trova invece che nella directory corrente. Questa directory può essere diversa dalla directory corrente.

TCHAR buff[MAX_PATH]; 
    memset(buff, 0, MAX_PATH); 
    ::GetModuleFileName(NULL,buff,sizeof(buff));  
    CString strFolder = buff; 
    strFolder = strFolder.Left(strFolder.ReverseFind(_T('\\'))+1);  
+0

Il percorso del exe (o dll) non è necessariamente la directory corrente. Non appena questo non è più il caso, si incontrano problemi se si utilizza questa soluzione. – Alex

+1

Di cosa stai parlando? questa soluzione è solo per evitare il caso in cui la directory corrente è diversa dalla directory in cui si trova il file exe. La domanda è cambiata dall'originale richiesto. – Gisway