我做了一个MDI的程序,并且创建了好几个视图,这些视图都是对应同一个的文档的,在APP的InitInstance过程中,我创建了这几个视图的文档模板,结果程序执行的时候,弹出了一个新建对话框来,要求我选择一个文档类型(三个文件类型都是一样的)来新建文件,我知道程序是想要根据选择的文档的次序选择对应的视图。但是,我的目的是想要应用程序一启动就自动创建默认的文档和对应的视图(就是根据我创建的一个默认的文档模板来新建文档),每次单击新建命令的时候,也同样创建默认的文档(我需要的)。其他视图,在菜单〉〉视图-〉其他视图 中选择。不知道大家有没有这个方面的经验,希望帮助我~

解决方案 »

  1.   

    remove the code : if ( ! ProcessShellCommand(cmdInfo))return FALASE;
      

  2.   

    需要动态创建这个视图
    在你的消息处理中判断是哪个视图 CMyView
    必须包含这个视图的头文件
    CMyView* pView = (CMyView*)RUNTIME_CLASS(CMyView)->CreateObject();
    可以得到这个视图的指针
    详细写可以看看MSDN关于RTTI的部分
      

  3.   

    算了,这个问题也不想问了,三角猫既然解决了就给我邮件 [email protected]
      

  4.   

    修改String Table,使得两个文档模板CSingleDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
    CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);函数中的nIDResource,不一致。
    如下所实例
    pDocTemplate = new CSingleDocTemplate(
    IDR_READSHTYPE/*IDS_SHAPEFILETYPE*/,
    RUNTIME_CLASS(CReadShpFileDoc),
    RUNTIME_CLASS(CMainFrame), // custom MDI child frame
    RUNTIME_CLASS(CReadShpFileView));
    AddDocTemplate(pDocTemplate); pDocTemplate = new CSingleDocTemplate(
    IDR_SHAPEFILEPROJECT/*IDS_SHAPEFILETYPECReadShapePrjFileDoc*/,
    RUNTIME_CLASS(CReadShpFileDoc),
    RUNTIME_CLASS(CMainFrame), // custom MDI child frame
    RUNTIME_CLASS(CReadShpFileView));
    AddDocTemplate(pDocTemplate);
    其中:
    IDR_READSHTYPE:\nReadSh\nReadSh\nReadSh 文件 (*.SHP)\n.SHP\nReadShpFile.Document\nReadSh Document
    IDR_SHAPEFILEPROJECT:\nReadSh\n\nShape File Project Files (*.SFP)\n.SFP\nReadShapeProject.Document\nShapeProject Document