Esta nota describe los problemas de creación y propiedad de WinApps, DocTemplates, documentos, cuadros y vistas. Puede encontrar la mayor parte de esta información y otras cuestiones de propiedad, creación interesante en la Guía del programador de Visual C++.
WinApp
Hay un objeto CWinApp en el sistema.
Estáticamente es construido y inicializado por implementación interna del marco de WinMain. Se debe derivar de CWinApp hacer nada útil (excepción: las DLL de extensión no deben tener una instancia de CWinApp : inicialización se realiza en DllMain en su lugar).
El objeto CWinApp uno posee una lista de plantillas de documento ( CPtrList). Hay uno o más plantillas de documento por aplicación. DocTemplates normalmente se cargan desde el archivo de recursos (es decir, una matriz de cadenas) en CWinApp::InitInstance.
pTemplate = new CDocTemplate (IDR_MYDOCUMENT,...);
AddDocTemplate(pTemplate)
El objeto CWinApp uno posee todas las ventanas de marco de la aplicación. La ventana de marco principal de la aplicación debe almacenarse en CWinApp::m_pMainWnd; generalmente establece m_pMainWnd en la aplicación de InitInstance si no se deja AppWizard hacerlo por usted. Interfaz de un único documento (SDI) es un CFrameWnd que sirve como la ventana de marco principal de la aplicación, así como la única ventana de marco de documento. Interfaz de múltiples documentos (MDI) es un MDI-marco (clase CMDIFrameWnd) que sirve como la ventana de marco principal de la aplicación que contiene a todos los niño s CFrameWnd. Cada ventana secundaria es de clase CMDIChildWnd (derivado de CFrameWnd) y sirve como uno de los potencialmente muchas ventanas de marco de documento.
DocTemplates
El CDocTemplate es el creador y el administrador de documentos. Posee los documentos que crea. Si su aplicación utiliza el enfoque de recursos que se describen a continuación, no será necesario derivar de CDocTemplate.
Para una aplicación SDI, la clase CSingleDocTemplate hace un seguimiento de un documento abierto. Para una aplicación MDI, la clase CMultiDocTemplate mantiene una lista ( CPtrList) de todos los documentos abiertos creados a partir de esa plantilla. CDocTemplate::AddDocument y CDocTemplate::RemoveDocument proporcionan al miembro virtual funciones para agregar o quitar un documento de la plantilla. CDocTemplate es un amigo de CDocument por lo que podemos establecer el puntero de espalda de CDocument::m_pDocTemplate protegido a punto de volver a la plantilla de documento que creó el documento.
CWinApp maneja la implementación predeterminada de OnFileOpen , que a su vez consultará todas las plantillas de documento. La aplicación incluye buscando documentos ya abiertos y decidir qué formato para abrir documentos nuevos en.
CDocTemplate gestiona la vinculación de la interfaz de usuario para documentos y marcos.
CDocTemplate mantiene un recuento del número de documentos sin nombre.
CDocument
Un CDocument es propiedad de un CDocTemplate.
Los documentos tienen una lista de vistas abiertas (derivada de CView) que está viendo el documento ( CPtrList).
Documentos no crear y destruir las opiniones, pero están conectados entre sí después de su creación. Cuando un documento está cerrado (es decir, a través de archivo y cierre), se cerrarán todas las vistas adjuntas. Cuando se cierra la última vista de un documento (es decir, o cerrar la ventana) se cerrará el documento.
El CDocument::AddView, RemoveView interfaz se utiliza para mantener la lista de vista. CDocument es un amigo de CView así podemos establecer el puntero de espalda CView::m_pDocument.
CFrameWnd
Un CFrameWnd (también conocido como un marco) juega el mismo papel como MFC 1.0, pero ahora la clase CFrameWnd está diseñada para ser usado en muchos casos sin derivar una clase nueva. Las clases derivadas, CMDIFrameWnd y CMDIChildWnd también se han mejorado para que muchos comandos estándar ya están implementados.
El CFrameWnd es responsable de la creación de ventanas en el área de cliente del marco. Normalmente hay una ventana principal llenando el área de cliente del marco.
Para una ventana de marco MDI, el área de cliente se rellena con el control MDICLIENT que a su vez es el padre de todas las ventanas de marco MDI secundarios. Para una ventana de marco SDI o una ventana de marco MDI secundarios, el área de cliente normalmente está lleno con un CView-ventana objeto derivado. En el caso de CSplitterWnd, se llena el área de cliente de la vista con el objeto de la ventana de CSplitterWnd y el CView-se crean objetos de ventana derivadas (uno por panel de división) como ventanas secundarias de la CSplitterWnd.
&Notas técnicas por número |nbsp; Notas técnicas por categoría