zoukankan      html  css  js  c++  java
  • 【VC++学习笔记四】MFC应用程序中框架类的获取

    一、文档类中

    获取视图:

    先获取主窗体,在根据主窗体获取视图

    pMain->GetActiveDocument();注意类型转换

    由于文档中可能包含多个视图,可以按照下面函数获取:

      CView*   CTestDoc::GetView(CRuntimeClass*   pClass) 

      { 

            CView*  pView; 

            POSITION   pos=GetFirstViewPosition(); 

      

            while(pos!=NULL)

           {

                  pView=GetNextView(pos); 

                  if(!pView->IsKindOf(pClass))

                         break;

           } 

      

            if(!pView->IsKindOf(pClass))

           { 

                     AfxMessageBox("Connt   Locate   the   View./r/n");

                    return   NULL;

           }

     

           return   pView; 

      } 

    同理如果有多个视图,在一个视图中获取另外一个视图的方法可以如下:

                CView* CTestAView::GetView(CRuntimeClass* pClass) 

    CTestDoc* pDoc=(CTestDoc*)GetDocument(); 

    CView*    pView; 

    POSITION   pos=pDoc->GetFirstViewPosition(); 

    while(pos!=NULL)

    pView=pDoc->GetNextView(pos); 

    if(!pView->IsKindOf(pClass)) 

    break; 

    if(!pView->IsKindOf(pClass))

    AfxMessageBox("Connt Locate the View."); 

    return   NULL; 

    }

    return  pView; 

    }

    获取主窗体:

    CMainFrame *pMain = (CMainFrame *)AfxGetMainWnd();

    先获取App,再根据App获取主窗体

    CXXXApp *pApp = (CXXXApp *)AfxGetApp();

    CMainFrame *pMain = (CMainframe*)pApp->GetMainWnd();

    CMainFrame *pMain = (CMainframe*)pApp->m_pMainWnd;

    获取App:

    CXXXApp *pApp = (CXXXApp *)AfxGetApp();

    二、视图类中

    获取文档:

    GetDocument()

    返回的即为对应文档的指针,不是CDocument类,不需要进行类型转换。

    获取主窗体:

    CMainFrame *pMain = (CMainFrame *)AfxGetMainWnd();

    或者先获取App,在根据App获取主窗体

    CXXXApp *pApp = (CXXXApp *)AfxGetApp();

    CMainFrame *pMain = (CMainframe*)pApp->GetMainWnd();

    CMainFrame *pMain = (CMainframe*)pApp->m_pMainWnd;

    获取App:

    CXXXApp *pApp = (CXXXApp *)AfxGetApp();

    三、主窗体中

    获取文档:

    GetActiveDocument();注意类型转换

    获取视图:

    GetActiveView();注意类型转换

    获取App:

    CXXXApp *pApp = (CXXXApp *)AfxGetApp();

    四、App类中

    获取主窗体:

    CMainFrame *pMain = (CMainFrame *)AfxGetMainWnd();

    CMainFrame *pMain = (CMainframe*)this->GetMainWnd();

    CMainFrame *pMain = (CMainframe*)this->m_pMainWnd;

     

    获取视图:

    先获取CMainFrame,再根据CMainFrame获取视图:

    pMain->GetActiveDocument();注意类型转换

    获取文档:

    先获取CMainFrame,再根据CMainFrame获取文档:

    pMain->GetActiveDocument();注意类型转换

     

    五、程序中的其他类中

    参考上面的方式,其中App可由AfxGetApp获取,CMainFrame可由AfxGetMainWnd获取,任何地方都可以,Doc和View是属于CMainFrame的两个结构,可以通过CMainFrame获取。

  • 相关阅读:
    用C# WebClient类 提交数据
    a标签弹出 文件上载框
    C中 #define
    五款专业文本编辑器比较(转贴)
    IE和Firefox(火狐)在JavaScript方面的不兼容及统一方法总结
    全球历史票房排行
    ASP调用带参数存储过程的几种方式
    VB6.0如何使用正则表达式
    实现VB与EXCEL的无缝连接
    初识Firebug 全文 — firebug的使用
  • 原文地址:https://www.cnblogs.com/OldGlory/p/3978112.html
Copyright © 2011-2022 走看看