MFC多文档,怎样让每个子视图(选项卡)显示自定义的内容?

时间:2021-11-30 06:27:44
环境:VS2013   MFC多文档项目
问题:我的工程在新建时VIEW类继承于CFormView,在视图中我添加了几个Button,我想要实现:当点击其中一个button时,将新建一个视图(选项卡),然后在其中显示自己自定义的内容。  
备注:因为先前没弄过多文档,对多文档不是对了解,不知道怎么让每个视图单独显示自己的内容,我现在每新建一个视图时,显示的都是一样的内容,也就是我那个有几个Button的视图!  MFC多文档,怎样让每个子视图(选项卡)显示自定义的内容?

4 个解决方案

#1


自己先UP一下! 

#2


请参考这个,希望对你有帮助:http://blog.csdn.net/visualeleven/article/details/7010821

#3


FormView 构造的时候传入不同的对话框资源ID 就会展现不同的视图,
 如果除了静态框之类的控件外 其他的操作可能还得添加处理

#4


引用 2 楼 VisualEleven 的回复:
请参考这个,希望对你有帮助:http://blog.csdn.net/visualeleven/article/details/7010821


谢谢! 通知自定义自己的模板DOC,确实可以生成自己想要的视图! 
再补充二个问题哈,
一,我现在建立了多个模板,因为在程序运行中,我点击某个按钮就会新建一个视图让我来显示指定的内容,所以我建立了多个模板在程序初始化的时候。 那么在多个模板的情况下,我怎么选择我想要的那个模板呢?


          int nDocTmplateIndex = 0; // 这里你可以定义为一个成员变量,指示用哪个模板来创建,这里写死只是为了做演示而已 :)  
      
          CDocTemplate* pTemplate = NULL;  
          int nIndex = 0;  
          POSITION pos = GetFirstDocTemplatePosition();  
          while(pos)  
          {  
              CDocTemplate* pTemplate = GetNextDocTemplate(pos);  
              if(nDocTmplateIndex == nIndex++)  
              {  
                  ASSERT(pTemplate != NULL);  
                  ASSERT_KINDOF(CDocTemplate, pTemplate);  
                  pTemplate->OpenDocumentFile(NULL);  
      
                  break;  
              }  
          }  

你给的代码中,是通过获取第一个模板的pos后,然后按顺序把所有的模板视图都显示出来,那么我要显示我指定的那一个模板视图呢? 怎么做。

二,当我点击一个Button时,新建一个我的模板视图后,再点击这个Button时,又给我新建了一个,有没有什么办法可以判断当前这个模板的视图已打开状态不用再新建了? 并且在点击这个Button时,如果视图是已打开状态,自动切换到那个视图上面?

分不多,但希望还是能得到你的帮助哈。 万分感谢!!!

#1


自己先UP一下! 

#2


请参考这个,希望对你有帮助:http://blog.csdn.net/visualeleven/article/details/7010821

#3


FormView 构造的时候传入不同的对话框资源ID 就会展现不同的视图,
 如果除了静态框之类的控件外 其他的操作可能还得添加处理

#4


引用 2 楼 VisualEleven 的回复:
请参考这个,希望对你有帮助:http://blog.csdn.net/visualeleven/article/details/7010821


谢谢! 通知自定义自己的模板DOC,确实可以生成自己想要的视图! 
再补充二个问题哈,
一,我现在建立了多个模板,因为在程序运行中,我点击某个按钮就会新建一个视图让我来显示指定的内容,所以我建立了多个模板在程序初始化的时候。 那么在多个模板的情况下,我怎么选择我想要的那个模板呢?


          int nDocTmplateIndex = 0; // 这里你可以定义为一个成员变量,指示用哪个模板来创建,这里写死只是为了做演示而已 :)  
      
          CDocTemplate* pTemplate = NULL;  
          int nIndex = 0;  
          POSITION pos = GetFirstDocTemplatePosition();  
          while(pos)  
          {  
              CDocTemplate* pTemplate = GetNextDocTemplate(pos);  
              if(nDocTmplateIndex == nIndex++)  
              {  
                  ASSERT(pTemplate != NULL);  
                  ASSERT_KINDOF(CDocTemplate, pTemplate);  
                  pTemplate->OpenDocumentFile(NULL);  
      
                  break;  
              }  
          }  

你给的代码中,是通过获取第一个模板的pos后,然后按顺序把所有的模板视图都显示出来,那么我要显示我指定的那一个模板视图呢? 怎么做。

二,当我点击一个Button时,新建一个我的模板视图后,再点击这个Button时,又给我新建了一个,有没有什么办法可以判断当前这个模板的视图已打开状态不用再新建了? 并且在点击这个Button时,如果视图是已打开状态,自动切换到那个视图上面?

分不多,但希望还是能得到你的帮助哈。 万分感谢!!!