Parsing Visual Studio MFC SDI应用程序中需要的帮助

Parsing Visual Studio MFC SDI应用程序中需要的帮助,parsing,visual-c++,mfc,treeview,sdi,Parsing,Visual C++,Mfc,Treeview,Sdi,我是visual Studio MFC的新手。我迫切需要创建一个小应用程序。我需要一个帮助我坚持这个问题,我有一个文本文件,其中有以下数据。 A-A1,A2 其中A是根节点,A1 A2是子节点。 我的要求是我需要创建一个SDI MFC应用程序。我需要像当我去文件->打开->xxx.txt(其中包含上述数据)它必须以如下格式显示 A. |_A1 |_A2(树状视图)。 我看了很多教程,比如它需要标记化等等。我真的很困惑,比如如何继续等等。我只做过基于dailog的教程,我是SDI的新手。 感谢您的

我是visual Studio MFC的新手。我迫切需要创建一个小应用程序。我需要一个帮助我坚持这个问题,我有一个文本文件,其中有以下数据。 A-A1,A2 其中A是根节点,A1 A2是子节点。 我的要求是我需要创建一个SDI MFC应用程序。我需要像当我去文件->打开->xxx.txt(其中包含上述数据)它必须以如下格式显示 A. |_A1 |_A2(树状视图)。 我看了很多教程,比如它需要标记化等等。我真的很困惑,比如如何继续等等。我只做过基于dailog的教程,我是SDI的新手。 感谢您的帮助。
提前感谢。

根据我对问题的评论和Codeproject中链接的同一个问题的收集,我将尝试提供一些帮助,但考虑到问题的一般性,答案可能也不是很具体

首先,如果希望显示树视图,则需要将视图类设置为CTreeView。CTreeView是一个带有嵌入式控件的CView。CEditView是一个带有嵌入式CEdit的CView,因此它可以用来显示文本(比如文本编辑器或类似的东西)。普通CView不支持任何特殊类型的内容,因此您必须自己“绘制”它

现在,要在视图中显示某些内容,您必须告诉它显示它。仅仅读取文件是不行的。你必须积极地表现出来。通常,您会将数据从文件读入某种结构中,然后从那里显示数据。或者,您也可以将数据直接存储在树中,这取决于具体情况。无论如何,您需要学习使用CTreeView/CTreeCtrl。基本上,使用添加元素

至于标记化,我不确定我是否理解您的格式,但我想我会对根节点和子节点使用不同的分隔符。所以如果你有根Child1,Child2,我会这样做:

int pos = 0;
CString strRoot = strLine.Tokenize(_T("-"), pos);

// do something with strRoot, like store it or display it in the tree

while (pos != -1)
{
    CString strChild;

    strChild = strLine.Tokenize(_T(","), pos);
    // do something with strChild, like store it or display it in the tree
}

最后,在使用Doc/View体系结构时,方法是将数据与其显示分开。因此,您通常将数据保存在文档中,并在其中执行所有打开/保存操作,然后使用GetDocument从视图访问文档中的数据以显示数据。有时,在视图中使用实时数据可能是有意义的,但这不是通常的做法。在这种情况下,甚至可以将其改为基于对话框的应用程序。

基本上,我在基于dailog的应用程序中使用了CTreeCtrl,但这是我第一次在SDI中工作。我真的非常感谢你为我提供这样一个解决方案。我已经开发了一小段代码,看看吧

void CFileView::OnFileOpen()
 { 
  // TODO: Add your command handler code here
 CString pathname,strLine; 
 CStdioFile File; 

 if(File.Open(pathname, CFile::modeRead)) // Open to read
 { 
  while(File.ReadString(strLine)) // Read file 
  { 
     int Position = 0; 
     CString Token; 
     Token = strLine.Tokenize(_T("-:,"), Position);
     HTREEITEM hRoot = m_wndFileView.InsertItem(Token, 0, 0);

     while(Token!="") 
     { 
         Token = strLine.Tokenize(_T("-:,"), Position); 
         HTREEITEM hSrc = m_wndFileView.InsertItem(Token, 0, 0, hRoot);
     } 
   } 
 }
}
我的重点是,我是否将代码放在正确的函数中?i、 我们在哪里打开文件。因为在客户端窗口中,我没有得到任何东西,而只是一个空白窗口。SDI基于CTreeView类。
我现在清楚了标记器和树控件部分,但现在我不明白为什么我根本没有在客户端窗口中获取任何内容:(

您需要什么帮助?打开文件?解析文件?将数据放入树视图?处理MFC文档/视图体系结构?以上所有内容?是的,我需要帮助解析文本文件并放入树。我被困了两天:(你能教我怎么做吗?你应该发布一些代码,让我们知道你已经尝试了什么,并在这方面为你提供帮助。或者你应该针对问题的不同部分提出不同的问题。解析文件是一回事,在树视图上显示数据是另一回事,将所有这些集成到文档/视图应用程序中是另一回事……下面是t我试过的代码..还有一件事让我明白了na..在创建mfc SDI应用程序时,我给出的作为CEditView的基类是否可以用于此目的,或者我是否应该更改任何其他内容???void CFileView::OnFileOpen(){//TODO:在此处添加命令处理程序代码CString pathname,strLine;CStdioFile File;if(File.Open)(路径名,CFile::modeRead))//打开要读取的文件{while(file.ReadString(strLine))//读取文件{int Position=0;CString Token;Token=strLine.Tokenize(_T(“-”),Position);while(Token!=”){tprintf(生成的Token:%s\n”),Token=strLine.Tokenize(_T(“-”),位置);}