¿En qué función la clase CFrameWnd crea un objeto CView? ¿Cuáles son los requisitos previos para crear dinámicamente objetos de visualización?

En la función CXXXApp::InitInstance(), hay un fragmento de código similar al siguiente:

CMultiDocTemplate * pDocTemplate

pDocTemplate = new CMultiDocTemplate(IDR _ Test _ tipo MFC 2 ,

RUNTIME_CLASS(CTest_MFC2Doc),

RUNTIME_CLASS(CChildFrame), //subtrama MDI personalizada

RUNTIME_CLASS(CTest_MFC2 view));

Si (!pDocTemplate)

Devuelve FALSO

AddDocTemplate(pDocTemplate);

Primero cree un objeto de CMultiDocTemplate. Esta clase se utiliza para crear plantillas de documentos. Se pasan cuatro parámetros en su constructor. El parámetro 1 es el tipo de documento, que en realidad es un número entero. Puede personalizar más tipos para que su programa pueda manejar diferentes tipos de documentos. Los parámetros segundo a cuarto son RuntimeClass de la clase de documento, clase de ventana de marco y clase de vista, respectivamente. Tenga en cuenta que el marco (derivado de CFrameWnd) y la vista (derivada de CView) están asociados con una plantilla de documento aquí. A continuación, llame a AddDocTemplate(pDocTemplate) para agregar la plantilla de documento a la clase CXXXApp. Después de compilar el programa, cuando hace clic en "Archivo" -> Crear "Nuevo" en el menú, se creará un documento basado en la plantilla de documento que agregó (tres tipos de objetos, como CTest_MFC2Doc, CChildFrame y CTest_MFC2View, son realmente creado Estos tres Los objetos están relacionados y son respectivamente responsables de guardar datos, mostrar la ventana del marco (tenga en cuenta que la ventana interna no es la más externa) y mostrar la vista. El código de creación de estos tres objetos está escrito previamente. MFC. Todo lo que tienes que hacer es nuevos1 (o varios) objetos CMultiDocTemplate y luego llamar a AddDocTemplate para agregarlos a CXXXApp.

Puedes preguntarme si no entiendes

.