我有例程,可以在任何类中获得需要视图的指针,EMail

解决方案 »

  1.   

    [email protected]
    如果方便的话能不能贴出来,多谢了!
      

  2.   

    下面代码可的多文档中的一个文档中 任一视指针:
    CTest7View* 为你想要的视指针 POSITION pos=AfxGetApp()->GetFirstDocTemplatePosition();
    CDocTemplate *pTemp=AfxGetApp()->GetNextDocTemplate(pos);
    pos=pTemp->GetFirstDocPosition();
    CDocument *pDoc=pTemp->GetNextDoc(pos);
    CView *pView;
    pos=pDoc->GetFirstViewPosition(); BOOL bFind=false;
    while(pos!=NULL){
    pView=pDoc->GetNextView(pos);
    if(pView->IsKindOf(RUNTIME_CLASS(CTest7View))){
    bFind=true;
    break;
    }
    } if(bFind) m_strDisplay=((CTest7View *)pView)->m_strDisplay;
    else m_strDisplay="null";
      

  3.   

    获得mainframe的指针,调用GetActiveView
    CView *pCurView=((CFrameWnd *)AfxGetMainWnd())->GetActiveView();
      

  4.   

    大体思想是在应用类中保存这个视图的一个指针,这个指针在该视图创建是赋值,
    在工程中只有应用类,可以在任何类中调用,通过AfxGetApp便可获得应用类指针,在获得该视图的指针.
    思想是这样,实现时有一些细节,给你个例程看看比较负责,实际也是真正的帮助!
      

  5.   

    先多谢各位,现在还有一点问题。为了在CNodePropertyDlg对话框里使用我需要的CFlowDefineView视图对象,我在NodePropertyDlg.cpp文件里引用了#include "FlowDefineView.h",但是编译出现了7个Error,把#inlcude那句去掉就没问题,当然我不希望,因为我需要使用CFlowDefineView* pView对象。
    错误如下,希望大家再次帮忙。
    --------------------Configuration: FlowDefine - Win32 Debug--------------------
    Compiling...
    NodePropertyDlg.cpp
    c:\gzm\flowdefine\flowdefineview.h(20) : error C2143: syntax error : missing ';' before '*'
    c:\gzm\flowdefine\flowdefineview.h(20) : error C2501: 'CFlowDefineDoc' : missing storage-class or type specifiers
    c:\gzm\flowdefine\flowdefineview.h(20) : error C2501: 'GetDocument' : missing storage-class or type specifiers
    c:\gzm\flowdefine\flowdefineview.h(22) : error C2146: syntax error : missing ';' before identifier 'm_AddFlow'
    c:\gzm\flowdefine\flowdefineview.h(22) : error C2501: 'CAddFlow' : missing storage-class or type specifiers
    c:\gzm\flowdefine\flowdefineview.h(22) : error C2501: 'm_AddFlow' : missing storage-class or type specifiers
    c:\gzm\flowdefine\flowdefineview.h(30) : error C2061: syntax error : identifier 'CLink'
    Error executing cl.exe.
    Creating browse info file...FlowDefine.exe - 7 error(s), 0 warning(s)
      

  6.   

    在flowdefineview.h 文件中包含各个类('CFlowDefineDoc' 'CAddFlow' 'CLink')的头文件
      

  7.   

    为什么要这样呢?我不#include "FlowDefineView.h"编译成功啊,FlowDefineView.h中也不用包含那些头文件。
      

  8.   

    在flowdefineview.h 中加了头文件还是不行,编译说有重复定义错误。
    --------------------Configuration: FlowDefine - Win32 Debug--------------------
    Compiling...
    NodePropertyDlg.cpp
    c:\gzm\flowdefine\node.h(15) : error C2011: 'CNode' : 'class' type redefinition
    c:\gzm\flowdefine\flowdefineview.h(24) : error C2143: syntax error : missing ';' before '*'
    c:\gzm\flowdefine\flowdefineview.h(24) : error C2501: 'CFlowDefineDoc' : missing storage-class or type specifiers
    c:\gzm\flowdefine\flowdefineview.h(24) : error C2501: 'GetDocument' : missing storage-class or type specifiers
    Generating Code...
    Compiling...
    FlowDefine.cpp
    c:\gzm\flowdefine\node.h(15) : error C2011: 'CNode' : 'class' type redefinition
    c:\gzm\flowdefine\link.h(15) : error C2011: 'CLink' : 'class' type redefinition
    c:\gzm\flowdefine\addflow.h(19) : error C2011: 'CAddFlow' : 'class' type redefinition
    Generating Code...
    Compiling...
    FlowDefineDoc.cpp
    c:\gzm\flowdefine\node.h(15) : error C2011: 'CNode' : 'class' type redefinition
    c:\gzm\flowdefine\link.h(15) : error C2011: 'CLink' : 'class' type redefinition
    c:\gzm\flowdefine\addflow.h(19) : error C2011: 'CAddFlow' : 'class' type redefinition
    Generating Code...
    Compiling...
    FlowDefineView.cpp
    c:\gzm\flowdefine\node.h(15) : error C2011: 'CNode' : 'class' type redefinition
    c:\gzm\flowdefine\link.h(15) : error C2011: 'CLink' : 'class' type redefinition
    c:\gzm\flowdefine\addflow.h(19) : error C2011: 'CAddFlow' : 'class' type redefinition
    Generating Code...
    Error executing cl.exe.
    Creating browse info file...FlowDefine.exe - 13 error(s), 0 warning(s)
      

  9.   

    应该有各类层次:
    1、自定义类
    2、视类
    3、文档类在低层中须包含高层时,用include 
    在高层中须包含低层时,在.h文件中用 类声明 ,在.cpp文件中用 include ,
    如在视类中包含文档:  .h文件中 class CXXDoc; 
                       .cpp文件中 #include “XXDoc.h"
      

  10.   

    强行修改对话框的构造函数!把CView *pView(也就是this)传给对话框!