2009-06-17 7 views
6

Sé que existen las funciones GetCurrentDirectory() y SetCurrentDirectory() en el marco MFC, pero no tengo un objeto CFtpConnection en mi aplicación. Tengo una clase simple derivada de CWinApp, y me gustaría recuperar su directorio de trabajo al iniciar el programa. ¿Cuál es el método más fácil para lograr este objetivo? Gracias de antemano por los consejos.MFC: función GetCurrentDirectory

+0

Ver http://msdn.microsoft.com/en-us/library/aa364934(VS.85).aspx ... nada que ver con si usted tiene o no un objeto CFtpConnection. – ChrisW

+0

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

+0

En circunstancias normales, la carpeta de trabajo se encontrará en la carpeta de datos de la aplicación de usuario y hay una API especial para obtener ubicaciones de carpetas especiales. Entonces, debe decidir cómo administrará dónde estará la carpeta de trabajo. –

Respuesta

15

GetCurrentDirectory es una simple función de API Win32, por lo que sólo lo llaman así:

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

Hay el mismo código, pero usa la clase CString (no olvides llamar 'ReleaseBuffer()' para tu objeto 'CString'): ' CString curDir; GetCurrentDirectory (MAX_PATH, curDir.GetBufferSetLength (MAX_PATH)); curDir.ReleaseBuffer(); ' – Mar

5

Asumo que está tratando de obtener el directorio en el archivo .exe se encuentra en lugar del directorio actual. Este directorio puede ser diferente del directorio actual.

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

La ruta del exe (o dll) no es necesariamente el directorio actual. Tan pronto como este no sea el caso, se encontrará con problemas si usa esta solución. – Alex

+1

¿De qué estás hablando? esta solución es solo para evitar el caso de que el directorio actual sea diferente del directorio donde está el archivo exe. La pregunta cambió de la pregunta original. – Gisway