大家好!
    最近在做编译原理的课设,要求做一个词法分析器。
    我想用VC做,想使用切分窗口。
    左边窗口输入源程序,右边的显示分析结果。
    可切分窗口好象不支持CeditView,另外,如何实现两个切分窗口的不同显示?
    如何打开一个文件,让它只显示在其中的一个切分窗口内?
    请大侠赐教!!!
    多谢。

解决方案 »

  1.   

    切分窗口是可以用CEditView类的,我就用过。下面的代码实现各个分割区域的通信(有文档相连的视图之间的通信)
    重载 CCuteFTPView::OnOpenDocument()函数; 
    CCuteFTPView* pCuteFTPView;
    CView2* pView2;
    POSITION pos;
    CView* pView;
    while(pos!=NULL)
    {
      pView=GetNextView(pos); 
      if(pView->IsKindOf(RUNTIME_CLASS(CCuteFTPView))==NULL) 
        pCuteFTPView=(CCuteFTPView*)pView; 
      else(pView->IsKindOf(RUNTIME_CLASS(CWiew2))==NULL) 
        pView2=(CView2*)pView; 

    这样我们在文档类中就获的了跟它相连的所有的视图的指针。
    如果需要在 CCuteFTPView中调用CView2中的一个方法DoIt()则代码如下: 
    CCuteFTPDoc* pDoc=GetDocument();
    CView2* pView2=pDoc->pView3;
    pView3.DoIt(); 
      

  2.   


      绿豆,你好!
      你也在这个课设吗?
      你能不能把你做的例子发给我,如何使用切分窗口??
      我的E-MAIL:[email protected]
      谢了。
      

  3.   

    呵呵,作业还是要自己做嘛。
    在头文件里定义:
    protected:
      CSplitterWnd m_wndSplitter;
    重载CChildFram::OnCreateClient()(我用的是多文档)BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
    {
    m_wndSplitter.CreateStatic(this,1, 2);             // TODO:调整行号和列号
    m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CSourceCodeView),CSize(450,200),pContext);
    return m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CTokenView),CSize(205,200),pContext);
    }
      

  4.   

    怎么都做这个呀?
    我前些天刚做了一个,
    不过没用切分窗口
    不能显示源程序,只能显示分析结果
    win32home.24cc.com
    首页>>Win32指南>>词法分析器