环境:VS2008 SP1 WIN7我想在 CMainFrame 里取得 当前激活 子窗口 的属性。
尝试用 CMDIFrameWnd *pFrame;
CMDIChildWnd *pChild;
CView *pView;
//获取主窗口指针
pFrame =(CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
// 获取子窗口指针
pChild = (CMDIChildWnd *) pFrame->GetActiveFrame();
//获取视类指针
pView = pChild->GetActiveView();方式获得。但我要用的属性在CMYView里,并不是在CView 里,请问如何取得。

解决方案 »

  1.   

    在当前文件中包含此类文件#include "CMYView.h"再将CView *pView;换成CMYView *pView;然后pView = (CMYView *)pChild->GetActiveView();
      

  2.   

    谢谢楼上回答,可怎么获取指针调用呢?
    比如我在
    CMYView 里定义了  CString  strTemp;在CMainFrame里怎么取得当前激活的CMYView的指针呢?CView *pView;
     pView = pChild->GetActiveView();这种方法定义的类是CView,而我要是CMYView才能取得吧?在CMainFrame里无法#include "MYView.h"
      

  3.   

    将CView *pView改成CMYView *pView;上面的代码写成:
    pView = (CMYView *)pChild->GetActiveView();
    然后#include 相关的CMYView的头文件就行了。
      

  4.   

    CMYView 是 MDI 自动生成的那个view。
    无法在Mainfrm中引用……
    引用就会出些莫名其妙的编译错误……(可能用莫名其妙不合适,但确实无法引用)
      

  5.   

    #include "MYView.h"这个加了吗?
      

  6.   

    有心人可以试下。
    建立个MY的多文档项目,然后在MainFrm.cpp 里 #include "MYView.h"会出现1>e:\job\my\my\my\myview.h(18) : error C2143: 语法错误 : 缺少“;”(在“*”的前面)
    1>e:\job\my\my\my\myview.h(18) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    1>e:\job\my\my\my\myview.h(18) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    1>e:\job\my\my\my\myview.h(18) : warning C4183: “GetDocument”: 缺少返回类型;假定为返回“int”的成员函数
    错误
      

  7.   

    如果不加,当然就是标准的MDI项目。编译也没问题的。
      

  8.   

    view的头文件上加上class MYDoc;