我想实现的功能描述如下:
一个多文档工程,在主框架的工具栏有8个按钮,每个按钮点击后就可以打开一个视图,再次点击该按钮,相对应的视图关闭而不是新开一个相同的视图,8个按钮对应的视图类型都是CListView型的。另一种情况:
假定点击了3个按钮为a按钮、b按钮、c按钮,打开了和3个按钮相应的a、b、c视图,由于c视图是最后一个打开的,所以c视图是当前的激活视图。要求:现在点击a或b按钮,他们相应的视图变为当前激活视图我现在只能做到打开一个视图后,通过视图标题名字获得该视图指针,然后对该视图进行操作。
再打开多视图的情况下我就不知道怎样能获得相应的视图了!请指教下

解决方案 »

  1.   

    POSITION position_template=AfxGetApp().GetFirstDocTemplatePosition();
    POSITION position_doc;
    POSITION position_view;
    while (NULL!=position_template)
    {
    CDocTemplate *p_doc_template=theApp.GetNextDocTemplate(position_template);
    position_doc=p_doc_template->GetFirstDocPosition();
    while (NULL!=position_doc)
    {
      CDocument *p_docment=p_doc_template->GetNextDoc(position_doc);
      position_view=p_docment->GetFirstViewPosition();
      while (NULL!=position_view)
      {
       CView *p_view=p_docment->GetNextView(position_view);
       //这里就是你想要的视图指针
      }
      
    } }
      

  2.   

    其实我觉得你都是一个视图的情况下。定义指针数据。分别保存相相应的指针。当点时,查一下指针是否存在,如果存在就关闭并设置成NULL。反之则建立一个View.