MFC把Document/View/Frame视为三位一体,这个整体就由DocumentTemplate来掌管。
首先创建一个APP类CTestApp
class CTestApp : public CWinApp
{
...
public:
CMultiDocTemplate* m_pTemplate2DView;
CMultiDocTemplate* m_pTemplate3DView;
}
m_pTemplate2DView = new CMultiDocTemplate(
IDR_LADYBUTYPE, // ico resource ID
RUNTIME_CLASS( CTestDoc ), //custom document class
RUNTIME_CLASS( CChildFrame ), // custom MDI child frame
RUNTIME_CLASS( C2dView ) ); // custom view
AddDocTemplate( m_pTemplate2DView ); // 添加模板
m_pTemplate3DView = new CMultiDocTemplate(
IDR_LADYBUTYPE,
RUNTIME_CLASS( CTestDoc),
RUNTIME_CLASS( CChildFrame ),
RUNTIME_CLASS( C3dView ));
//AddDocTemplate( m_pTemplate3DView ); //两处都添加,打开文件时是用第一个打开的,即2dView
当使用者单击【文件/新建】命令项时,根据APPWizard为我们所做的Message Map( ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) )
此命令由CWinApp::OnFileNew函数接手处理。
>>CDocManager::OnFileNew,
>>CWinApp::OpenDocumentFile,
>>CDocManager:: OpenDocumentFile,
>>CMultiDocTemplate::OpenDocumentFile。