Método de implementación para obtener el nombre y la ruta del archivo en MFC: traducción de la anotación BrowseCtrlCallback en la clase DirDialog
{
//bInfo.lParam? =?(LPARAM) this; esta línea de código pasa el objeto CDirDialog a la función de devolución de llamada BrowseCtrlCallback a través de lpData.
CDirDialog*? pDirDialogObj? =?(cdir dialog *)LP data;
//Después de inicializar el cuadro de diálogo para explorar el directorio, se llamará a BrowsSectrCallBack y umsg es igual a BFFM_initialization.
¿Y si? (uMsg?==?BFFM_Initialization?)
{
//Si se especifica un directorio predeterminado, envíe un mensaje de selección de BFFM_setting a hwnd (cuadro de diálogo de exploración de directorio), seleccione automáticamente un directorio predeterminado.
if(?!?pDirDialogObj->m_strSelDir.IsEmpty()?)
* enviar mensaje(hwnd, BFFM_SET_SELECT, ?realmente?(LPARAM) (LPCTSTR)(pDirDialogObj- >m_strSelDir));
//Si m_strWindowTitle de CDirDialog no es una cadena vacía, establezca el título de la ventana del cuadro de diálogo del directorio de exploración en m_strWindowTitle.
If (?!?pDirDialogObj->m_strWindowTitle.IsEmpty()?)
* SetWindowText(hwnd, (LPCTSTR)?pDirDialogObj->m_strWindowTitle
);}
//Cuando el directorio seleccionado por el usuario cambia en el cuadro de diálogo de exploración del directorio, se llama a browserctrcallback y umsg es igual a BFFM_SELCHANGED.
¿Y si? if(?uMsg?==?BFFM sel cambió?)
{
//En //BFFM_SELCHANGED mensaje, lpData? PIDL apunta al directorio recién seleccionado
LPITEMIDLIST? ¿pidl? =?(LPITEMIDLIST)? lParam
Car? Seleccione [MAX_PATH];
//Llame a SHGetPathFromIDList para convertir PIDL en una cadena de ruta del sistema de archivos.
Si (?!? *SHGetPathFromIDList(pidl, select)?)
¿Seleccionar[0]? =?'\0';
CString? csStatusText
//Llame a la función SelChanged, y la función SelChanged sobrecargada por CDirDialog o su clase derivada determina si se permite la selección de este directorio.
¿Booleano? reservar¿vale? =?pDirDialogObj->SelChanged(select,csStatusText);
If (?pDirDialogObj->m_bStatus?)
//El contenido de la barra de estado del cuadro de diálogo del directorio será explorado Modifique la ruta al directorio recién seleccionado.
*Enviar mensaje (hwnd, BFFM_SETSTATUSTEXT?,?0,?(LPARAM)(LPCSTR)csStatusText);
//Si SelChanged devuelve TRUE, significa que la selección del directorio es permitido, por lo que el botón "Aceptar" está habilitado; de lo contrario, está deshabilitado.
*Enviar mensaje (hwnd, BFFM_ENABLEOK, ?0,?bOk
}
¿Regresar? 0;
}