Cómo cambiar el modo de operación de documentos predeterminado de MFC
1. Llame a CDocManager::DoPromptFileName La función de DoPromptFileName es mostrar el cuadro de diálogo de apertura del archivo para obtener el nombre del archivo.
2. Llame a cwinapp::abrir archivo de documento (lpctstr lpszfilename).
Si desea cambiar la forma en que se abre el documento, solo necesita sobrecargar DoPromptFileName y OpenDocumentFile en la clase de herencia CWinApp. Por ejemplo, cambie el cuadro de diálogo de apertura de archivos predeterminado. Simplemente cree un archivo para abrir el cuadro de diálogo y llámelo en el DoPromptFileName sobrecargado para obtener un nombre de archivo.
Analicemos CWinApp::OpenDocumentFile. El flujo de trabajo de OpenDocumentFile es:
1. Determine qué plantilla de documento usar mediante el sufijo del parámetro lpszFileName.
2. Ajuste el documento, la vista y la ventana del marco de la plantilla del documento.
3. Llame a CDocTemplate::OpenDocumentFile.
CDocTemplate::OpenDocumentFile es una función virtual pura, implementada por sus clases derivadas CsingleDocTemplate y CMultiDocTemplate, y se describe mediante CsingleDocTemplate::open document file.
1. Determine si existe un documento y, de ser así, determine si se ha guardado.
2. Crea una nueva ventana de marco.
3. Determine si el archivo existe a través de la ruta del nombre del archivo. Si existe, llame al CMyDoc::OnOpenDocument personalizado; de lo contrario, llame a CMyDoc::OnNewDocument.
A partir del análisis anterior, podemos realizar muchos cambios en los métodos de operación de documentos predeterminados de MFC, como cambiar los métodos de apertura y guardado de archivos, y cambiar los cuadros de diálogo de apertura y guardado de archivos.
Los diversos códigos fuente que se muestran arriba se pueden obtener de los subdirectorios MFC\include y mfc\src en el directorio de instalación de VC. Los archivos de encabezado de las clases CWinApp, CDocTemplate, CSingleDocManager y CDocument son afxwin.h, el código fuente de la clase CWinApp está en AppCore.cpp, el código fuente de la clase CDocManager está en Docmgr.cpp y el código fuente El código de la clase CDocTemplate y la clase CsingleDocManager se encuentran en doctempl y docsingl.cpp.
En resumen, la mejor manera de conocer la estructura de vista del documento MFC es leer más código fuente de MFC.