我在一篇文章看到:在程序运行时CWinApp将创建一个CFrameWnd框架窗口实例,而框架窗口将创建文档模板,然后有文档模板创建文档实例和视实 例,并将两者关联。
而我自己创建了一个单文档工程,在VC自动生成的代码中:
BOOL CMyApp::InitInstance()
{
...
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CMyView));
AddDocTemplate(pDocTemplate); ...
}
有这么一段代码,如果就这段代码来看,好像应该是WinApp在创建文档模板的同时创建了框架窗口,文档和视图,请问是不是这样?
而我自己创建了一个单文档工程,在VC自动生成的代码中:
BOOL CMyApp::InitInstance()
{
...
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CMyView));
AddDocTemplate(pDocTemplate); ...
}
有这么一段代码,如果就这段代码来看,好像应该是WinApp在创建文档模板的同时创建了框架窗口,文档和视图,请问是不是这样?
一般顺序就是先创建新文件所对应的文档类,然后创建框架,因SDI只有一个主框架,故为CMainFrame,如是MDI则创建的是CChildframe,创建完框架后当然就是创建视图了,视图是用来显示文档类实例的内容的,而它又必须依附框架来创建故需在框架创建之后!
创建关系
CWinApp --> DocTemplate, MainFrame
DocTemplate --> Document, ChildFrame
ChildFrame --> View