...在哪一个函数中创建视图(CView)对象?可以动态创建视图对象的前题条件...
发布网友
发布时间:2024-09-27 10:42
我来回答
共1个回答
热心网友
时间:2024-10-25 06:02
在CXXXApp::InitInstance()函数里,有类似于这样的一段代码:
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_Test_MFC2TYPE,
RUNTIME_CLASS(CTest_MFC2Doc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CTest_MFC2View));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
先创建1个CMultiDocTemplate的对象。这个类是用来创建文档模板的。在它的构造函数里传了4个参数。第1个参数是文档类型,其实就是个整数。你可以再自定义一些类型,这样你的程序就能处理不同类型的文档了。第2到4个参数分别是文档类、框架窗口类、视图类的RuntimeClass,注意,在这里就把框架(CFrameWnd的派生类)和视图(CView的派生类)关联到一个文档模板里了。接下来调用AddDocTemplate(pDocTemplate),添加一个文档模板到CXXXApp类里。程序编译好后,当你单击菜单上“文件”->“新建”时,就会按照你添加的那个文档模板,创建一个文档(实际上是创建了CTest_MFC2Doc、CChildFrame、CTest_MFC2View这3个类的对象。这3个对象是关联在一起的,分别负责保存数据、显示框架窗口(注意,是里面的那个窗口不是最外边的那个)、显示视图)。这3个对象的创建代码是MFC事先写好的,你要做的只是new1个(也可以是多个)CMultiDocTemplate的对象,然后调用AddDocTemplate把它加到CXXXApp里。
说的稍有点乱,不明白的地方可以向我追问。